某些执行后递归停止

时间:2019-05-16 12:53:29

标签: c

我试图找到一个数字的最大素数。某些执行后,代码停止工作(至少我认为是这样)。 printf部分用于调试。 数字是600851475143。

long recursed(long i, long j){
  if (j == 1){
    return i;
  }
  else if (i%j != 0){
    printf("Else if i : %ld %ld\n", i, j);
    return recursed(i, j-1);
  }
  else{
    i /= j;
    printf("Else i : %ld\n", i);
    return recursed(i, i-1);
  }
}

1 个答案:

答案 0 :(得分:0)

典型的32位长为4,294,967,295。
您给了它600,851,475,143,它要大得多。

请确保您在x64上进行编译,并使用unsigned long long
然后检查是否溢出。