day*_*mer 0 java algorithm primes
这就是我所拥有的
public class SumOfPrimes {
public static void main(String[] args) {
long sum = 0;
for (int i = 2; i <= 1000; i++) {
if (isPrime(i)) {
sum += i;
}
}
System.out.println(sum);
}
private static boolean isPrime(final int number) {
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的是
76127
Run Code Online (Sandbox Code Playgroud)
但正确的答案是
3682913
Run Code Online (Sandbox Code Playgroud)
参考文献:http://www.wolframalpha.com/input/? i = sum + first + 1000+prime + numbers&x = 0&y = 0
我无法在我的代码中发现错误,这里有任何帮助吗?
我完全误解了这个问题.以下结果没问题
public static void main(String[] args) {
long sum = 0;
int count = 0;
int number = 2;
while (count < 1000) {
if (isPrime(number)) {
sum += number;
count++;
}
number++;
}
System.out.println(sum);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
其正确的通过Blorgbeard"前1000个素数的总和"所示是不一样的"其是<= 1000的所有素数的总和".
在你的情况下,主要是计算前168个素数的总和.
你需要重写main如下来获得前1000个素数的总和:
public static void main(String args[]){
int number = 2;
int count = 0;
long sum = 0;
while(count < 1000){
if(isPrime(number)){
sum += number;
count++;
}
number++;
}
System.out.println(sum);
}
Run Code Online (Sandbox Code Playgroud)
输出:
3682913
Run Code Online (Sandbox Code Playgroud)