この 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を除いて、他のすべては順調に見えます... 何かアイデアはありますか?