**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
上个月关门了。
改进这个问题
我试图解决欧拉计划的第10个问题,这个问题要求所有素数之和低于200万(参考文献)。我得到的答案是 143042032116
,但实际答案是 142913828922
. 代码有什么问题?
package projectEuler;
public class Euler10 {
public static void main(String[] args) {
// sum of prime numbers below 2million
long sum=0;
int maxValue=2*1000*1000;
for(int i=0;i<maxValue;i++) {
boolean isPrime=true;
for(int j=2;j*j<i;j++) {
if(i%j==0) {
isPrime=false;
}
}
if(i<2) {
isPrime=false;
}
if(isPrime==true) {
sum+=i;
}
}
System.out.println(sum);
}
}
1条答案
按热度按时间kmbjn2e31#
问题似乎出在嵌套循环的情况下,应该
j * j <= i
排除奇数的平方。此外,嵌套循环应优化为在检测到非素数时立即完成。
更新后的代码如下:
它产生正确的响应:
如果循环中不包含偶数,则剩余奇数素数的和可以更快地计数: