【问题标题】:program in which there is high iterations loops in C doesn't give me an output .. why?在 C 中存在高迭代循环的程序没有给我输出.. 为什么?
【发布时间】:2014-09-30 01:16:37
【问题描述】:

我做了一个程序,它打印低于 400 万的素数之和,它没有给我输出。例如,当我计算低于 1000 的素数时,它工作得很好。那么高迭代有什么问题呢?这是计算某个数下素数之和的函数。

long long is_prime(){

long long i,j,c=0,sum=0;

for(i=2;i<=4000000;i++){

    c=0;

    for(j=1;j<i;j++){

         if(i%j==0) c++;

    }

    if(c==1) sum+=i ;
}

return sum;
}

谁能帮帮我?

【问题讨论】:

  • 可能整数溢出。尝试将所有整数声明为 long
  • sum 在 32 位整数中是不够的。
  • 这只是需要很长时间。不要直接从1K跳到4M,试试10K和100K,你会发现运行时间在迅速增加。
  • 程序实际完成运行需要多长时间?
  • 如果 100,000 只需要 2 分钟,那么 4,000,000 应该需要两天多一点。

标签: c loops


【解决方案1】:

“不给我输出”是没有意义的,无论是产生错误还是只是长时间执行。 您的代码的复杂性在 O(n*n) 中,在最坏的情况下需要 400 万* 400 万次迭代,这可能是原因,等待结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多