【发布时间】:2015-07-01 04:12:07
【问题描述】:
这是我查找素数和的代码。它适用于一些小数字,但如果它是 2000000(200 万),它永远不会结束。有人可以帮助我吗?
import java.math.BigInteger;
public class Problem010{
public static void main(String[] args) {
BigInteger sum = new BigInteger("2");
//for (int i=3; i<2000000; i++) {
for(int i=3; i<10; i++){
for (int j=2; j<i; j++){
if (i % j == 0)
break;
else if (i == j+1){
sum = sum.add(BigInteger.valueOf(i));
}
}
}
System.out.println("Sum = "+sum);
}
}
【问题讨论】:
-
可以建议这些 2, 1),而不是通过 2 到 i 运行内循环,而是通过 2 到 sqrt(i)。 2) 跳过偶数
-
我敢肯定,您的程序需要很长时间才能完成。所以,改变你的算法。
-
永远不会结束大约多少分钟或几小时?
-
使用“Eratosthenes sieve”方法计算素数,然后求和。我希望它可以在“普通”PC 上在一秒钟内完成评估。
-
这是来自 Project Euler 的问题。我们的想法是找到可以自己“快速”计算答案的算法。