我希望这个 Java 程序流式传输 10001 个素数,但它莫名其妙地决定将 16 标记为素数。
这里的算法只是保持素数的连续计数,并检查每个新数字以查看它是否可以被任何小于它的素数整除。如果不是,则将其添加到数组 primes[ ] 中,该数字显示在控制台上,并且该过程继续进行,直到primes[ ]
已满。
public static void main(String[] args){
int[] primes = new int[10001];
int primeCount = 1;
int testNumber = 3;
primes[0] = 2;
while(primeCount < 10001){
for (int i = 0; i < primeCount; i++){
if (testNumber % primes[i] == 0){
i = 0;
testNumber++;
}
}
primes[primeCount] = testNumber;
System.out.println(testNumber);
primeCount++;
testNumber++;
}
}
控制台读数:
3 5 7 11 13 16 17 19 . . .
除了 16 个,其他一切看起来都井井有条……有什么想法吗?