次の問題に遭遇しました。1 から N までのすべての素数を取得して出力するクラスがあります。N は、自分で挿入する必要があるパラメーターです。N に 10000 を挿入すると、コードが機能し、2 から N に最も近い素数までのすべての素数が出力されます。
40000 を挿入すると、コードは引き続き機能します。50000 (またはそれ以上) を挿入すると、コードは ArrayOutOfBoundsException を返します。なんで?
これは私が使用するコードです:
ArrayList<Integer> priemGetallen = priemGetallen(n);
for (Integer i : priemGetallen) {
System.out.println(i);
}
そして用途
ArrayList<Integer> priemgetallen = new ArrayList<Integer>();
for(int i = 2; i < n; i++){
priemgetallen.add(i);
}
for (int i = 2; i < n; i++) {
for (int j = i; j * i <= n; j++) {
if((j*i) < priemgetallen.size()){
priemgetallen.remove(j*i);
}
}
}
return priemgetallen;
}
ポイント「priemgetallen.remove(j*i)」は、エラーが発生する場所です。
誰かが、これがすべての N の約よりも大きい場合に機能しない理由を教えていただければ、本当に感謝しています。40000。
前もって感謝します!