项目欧拉计划10没有在我的计划中给出书面答复

时间:2013-06-26 12:51:58

标签: java

我刚刚开始做项目欧拉的问题,我是第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

2 个答案:

答案 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开始;第二,你不要测试平方根。