我刚刚开始做项目欧拉的问题,我是第10个问题。这是:10以下的素数之和是2 + 3 + 5 + 7 = 17.找出低于200万的所有素数之和。
我的代码是:
public class SummationOfPrimes {
public static void main(String[] args) {
long sum = 2;
for (int i = 2; i < 2000000; i++) {
if (primeOrNot(i)) {
sum += i;
}
}
System.out.println(sum);
}
static Boolean primeOrNot(long input) {
for (int i = 2; i < Math.sqrt(input); i++) {
if (input % i == 0) {
return false;
}
}
return true;
}
}
我得错了答案:143042032118
。
答案 0 :(得分:3)
顺便说一句,对于你的解决方案有多远,我们总是有所帮助。
如果答案很接近(我认为是),那么我立即关注你的素性测试,这是不正确的;你没有正确测试像4,9,...,49这样的素数正方形;你需要去并包括平方根(向下舍入到积分是允许的。)
写
for (int i = 2; i<= Math.sqrt(input); ++i){
代替。
起始循环值和总和的初始值(承认Jean-BaptisteYuès)也有问题:要么写long sum = 0;
,要么for (int i = 3...
)代替你现在拥有的东西。
答案 1 :(得分:2)
两个编程错误:首先,您从i=2
开始,但您的总和已经sum=2
,将其更改为sum=0
或从i=3
开始;第二,你不要测试平方根。