可能重複:
Project Euler, Problem 10 java solution not working項目歐拉#10,JAVA
所以,我試圖解決Project Euler Problem 10在Java中,和我得到不正確的答案。這裏是我的代碼:
public class Problem10 {
public static void main(String[] args)
{
long sum =0;
for(int i =3;i<2000000;i+=2)
{
if(isPrime(i))
{
sum+=i;
}
}
System.out.println(sum);
}
public static boolean isPrime(int n)
{
boolean prime = true;
if (n<2) return false;
if (n==2) return true;
if (n%2==0) return false;
for (int i = 3; i<=Math.sqrt(n);i+=2)
{
if (n%i==0)
{
prime=false;
break;
}
}
return prime;
}
}
哪打印出142913828920,哪個項目歐拉告訴我是錯誤的。
任何想法?
(另外,我知道我的尋找素數的方法是非常低效的。)
http://projecteuler.net/index.php?section=problems&id=10 – Isaac 2010-08-03 18:19:41
這種方法不是非常* *低效率的。在Haskell中它是'2:[n |所有((> 0).rem n)[3,5..floor(sqrt(fromIntegral n))]] - - 奇數的最小嚐試除法。下面的*非常低效,*流行*:'sieve [2 ..]其中sieve(x:xs)= x:sieve [n | n < - xs,rem n x> 0]' - 質數過多的試劃。更慢也更受歡迎的是'[n |所有((> 0).rem n)[2..n-1]] - 所有數字的過度試劃。 '[n | n < - [2 ..],而不是$ elem n [j * k | j < - [1..n-1],k < - [1..n-1]]]'是冠軍 - 我看到了它(在Java IIRC中)! – 2012-06-16 08:05:24