Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析素数c+的倍数+;? 我是C++初学者,并且尝试学习算法。_C++_Algorithm_Math_Primes - Fatal编程技术网

如何解析素数c+的倍数+;? 我是C++初学者,并且尝试学习算法。

如何解析素数c+的倍数+;? 我是C++初学者,并且尝试学习算法。,c++,algorithm,math,primes,C++,Algorithm,Math,Primes,我正在尝试创建一个控制台应用程序,该应用程序可以获取整数和素数的倍数。例如,获取12并显示3*2*2 12=3*2*2 但我有问题。我写了这样的东西 int prime (int a){ int i ; if ( a == 2 ){ return 1 ; } for (i=2; i < ((a/2)+1) ;i ++){ if (a%i == 0){ return 0;

我正在尝试创建一个控制台应用程序,该应用程序可以获取整数和素数的倍数。例如,获取12并显示3*2*2

12=3*2*2

但我有问题。我写了这样的东西

int prime (int a){ 
    int   i ; 
    if ( a == 2 ){ 
        return   1 ; 
    } 
    for (i=2; i < ((a/2)+1) ;i ++){ 
        if (a%i == 0){ 
            return 0; 
        } 
    } 
    return   1 ; 
 } 

int main() {
    int number;
    int tmp;
    //int primes[];
    cout << "Enter a number:" << endl;
    cin >> number; 
    tmp = number;
    int i = 2;
    for (i; i <= number ; i++){
        if (prime(i)) {
            tmp = number/i;
           cout << tmp <<endl;          
        }
    }
    return 0;
}
intprime(inta){
int i;
如果(a==2){
返回1;
} 
对于(i=2;i<((a/2)+1);i++{
如果(a%i==0){
返回0;
} 
} 
返回1;
} 
int main(){
整数;
int tmp;
//整数素数[];
库特数;
tmp=数量;
int i=2;
对于(i;i我将省略“这可以做得更好”的问题。代码中有3个问题使其不正确:

  • 检查i是否为素数,但不检查它是否为除数。附加提示:检查tmp的赋值
  • 输出的是商,而不是势因子
  • 您将错过重复因素
    • 创建素数数组,不要每次都计算它们。在创建数组时,只检查素数上的除法,直到sqrt(n)。这里没有错误,只是更好
    • 检查n的素数除数,对于当前的素数p,只有当n可以再除以p时,才能转到下一个素数
    • 成功除以p后,更改该除法结果的检查编号
    在本规范中:

    if (prime(i)) {
        tmp = number/i;
        cout << tmp << endl;          
    }
    
    if(素数(i)){
    tmp=数量/i;
    
    CUTE你是否尝试用调试器调试你的代码,或者甚至用简单的CUTs?@ DavidKernin调试器如果算法是错误的(如果它是提示),那就不好了。我说我是C++初学者,并且尝试学习一些东西。现在我想解决这个问题,这对我来说是很简单的。但是对我来说这很难…(请帮我解决:)@DieterLücking据我所知,调试器是用来使算法正确的:\n但不管怎样,他是个初学者,我不能要求这样做。@阿明,大卫建议你在代码的关键位置添加一些
    cout
    语句,这样你就可以看到算法在计算时是如何进步的。这将给你一个关于它失败了。