我偶然发现了以下问题:我有一个类可以获取和打印 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。
提前致谢!