我一直在研究Euler #7项目,不知道为什么我的程序不能工作。问题如下:
通过列出前六个素数: 2,3,5,7,11和13,我们可以看到第6素数是13。
10001素数是多少?
到目前为止,这是我的节目:
public class Euler7 {
public static void main (String[] args) {
long count = 1;
long primes = 0;
while (primes <= 10001) {
if (isPrime(count)){
primes++;
if (primes == 10001) {
System.out.println(count);
}
}
count++;
}
}
public static boolean isPrime (long i) {
if (i <= 1) return false;
else if (i == 2 || i == 3) return true;
else if (i % 2 == 0 || i % 3 == 0) return false;
else {
for (int n = 3; n < Math.sqrt(i); n+=2) {
if (i % n == 0) {
return false;
}
}
return true;
}
}}
编辑:为了清楚起见,它返回值104033,但是WolframAlpha说10001素数是104743
发布于 2013-08-08 16:11:32
您的代码错误地认为,一些满正方形的素数也是素数。特别是,您的isPrime(25)返回true。
这应该足以解决一个修复问题(好的,还有一个提示:您所需要的只是添加一个字符)。
https://stackoverflow.com/questions/18130786
复制相似问题