繁体   English   中英

CodeEval Java中前1000个质数的总和

[英]CodeEval Sum of the first 1000 prime numbers in java

现在,我正在尝试从https://www.codeeval.com做一个简单的任务

需要查找前1000个质数之和的位置。 我在IDEA中完成此操作,总和与正确答案相同。 但是当我尝试将文件上传到站点时,加载后显示错误:

"CodeEval Error: Compilation was aborted after 10 seconds".

我不知道这个错误。 关于这个错误有什么想法吗?

    public class solution {
        public static void main(String[] args) {
           int sum = 2;
           int num = 3;
           for (int i = 2; i <= 1000; i++) {
               while (!IsPrime(num)) {
                   num += 1;
               }
               sum = sum + num;
               num += 1;
           }
           System.out.println(sum);
        }
        static boolean IsPrime(int TestNum) {
            int NumOfDividers = 1;
            for (int x = 2; x <= TestNum; x++) {
                if (TestNum % x == 0) {
                    NumOfDividers = NumOfDividers + 1;
                }
            }
            return (NumOfDividers == 2);
    }
}

isPrime方法最简单的优化是跳过大部分这样的划分:

static boolean isPrime(long n) {
    if (n != 2 && (n & 1) == 0) {
        // Early test for even.
        return false;
    }
    for (long i = 3; i <= n / i; i += 2) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

可以使用已知素数列表对此进行改进,但这可能不是您想要的。

CodeEval Java支持最近已经发挥作用。 我通常必须多次上传我的解决方案,因为有时它会对它们进行适当的评分,有时会因您提到的错误而失败。 尝试一下,然后删除超时的那些。 并不是说您不能改善解决方案,而是要说这不是为什么您会收到该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM