gpt4 book ai didi

java - 埃拉托色尼筛法,ArrayIndexOutOfBoundsException,输出为合数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:36 26 4
gpt4 key购买 nike

我尝试编写一个埃拉托色尼筛法算法,我得到一个 ArrayIndexOutOfBoundsException 但我似乎不明白为什么,如果我更改限制,在打印时它只显示合数,如果可以的话,下面的代码会有所帮助。

public static Boolean[] solution(int N) {
Boolean[] isPrime = new Boolean[N];
isPrime[0] = false;
for(int i = 1; i <= N; i++) {
isPrime[i] = true;
}

for(int i = 2; i <= N; i++) {
if(isPrime[i]== true) {
System.out.println(i);
for(int j = 2; (j * i) < N; j++) {
int k = j * i;
isPrime[k] = false;
}

}
}

return isPrime;

最佳答案

i <= N;导致错误

for(int i = 1; i <= N; i++) {
isPrime[i] = true;
}

例如

如果N=4然后当 i=4 时出现错误. isPrime[4]原因OutOfBounds异常(exception),因为长度是 4.arrays 是基于零索引的。所以您可以访问的最大索引是 3。isPrime[3]

您可以通过将循环更改为 for(int i = 1; i < N; i++) { 来避免此错误

但是我不确定埃拉托色尼算法是什么。我希望你能改变你的代码记住数组是基于零索引的

关于java - 埃拉托色尼筛法,ArrayIndexOutOfBoundsException,输出为合数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32566307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com