这个程序的目的是计算 n 以下素数的总和 x 数量,但我的代码似乎不起作用,它编译并且没有错误。当我运行它时,控制台只是空白
public static void main(String[] args) {
Prime prime = new Prime();
BigInteger answer = BigInteger.valueOf(0);
for (int i = 2; i < 2000000; i++) {
if (prime.isPrime(i)) {
answer = answer.add(BigInteger.valueOf(i));
}
}
System.out.println(answer);
}
isPrime方法
boolean isPrime(int n) {
for(int i = 2; i < n ; i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
最佳答案
你只是等待的时间不够长。
尝试使用i < 200
你会看到答案 4227
打印速度相当快。
您正在检查2,000,000
素数的数字。您的isPrime
方法是O(n)
所以你正在做大约 2,000,000 * 1,000,000
计算。你自己解决吧。
关于Java : Not sure if correct use of BigInteger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862054/