10 以下的素数之和为 2 + 3 + 5 + 7 = 17。
求 200 万以下所有素数的和。
public class Problem10
{
public static void main(String[] args)
{
int sum = 17;
for(long i=11; i<2000000; i+=2)
{
if(isPrime(i)) sum += i;
}
System.out.println(sum);
}
public static boolean isPrime(long n)
{
if(n==2) return true;
if(n%2 == 0) return false;
for(long i=3; i<= Math.sqrt(n); i+=2)
{
if(n%i == 0) return false;
}
return true;
}
}
我不明白这有什么问题。它不断打印 1179908154,这是不正确的。
最佳答案
您的sum
是一个int
,但正在发生整数溢出。如果将数据类型更改为long
,则答案将更改为142913828922
,它比最大可能的int
长。 That appears to be the correct answer.
关于java - 项目 Euler #10 Java 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931082/