gpt4 book ai didi

java - Array 和 ArrayList 获取素数有什么区别?

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

我正在解决关于素数的问题,我找到了使用数组的解决方案,但我想使用数组列表来解决一些问题,其中之一就是很好地理解数组列表。但是我发现当我使用 arraylist 时结果不一样,这里有 2 个代码:

//使用数组

import java.util.Arrays;
public class Prime {
public static void main(String[] args) {
primeNumber(100);
}
public static void primeNumber(int end) {
boolean primeNumbers[] = new boolean[end];
for (int i = 0; i < end; i++) {
primeNumbers[i] = true;
}
for (int i = 2; i < primeNumbers.length; i++) {
if (primeNumbers[i] ) {
for (int j = i+i; j < primeNumbers.length; j += i) {
primeNumbers[j]= false;
}
}
}
for (int j = 2; j < primeNumbers.length; j++) {
if (primeNumbers[j]) {
System.out.println(j);

}
}
}
}

//使用ArrayList

import java.util.ArrayList;
public class Prime {
public static void main(String[] args) {
primeNumber(100);
}

public static void primeNumber(int end) {
ArrayList<Boolean> primeNumbers = new ArrayList<Boolean>();
for (int i = 0; i < end; i++) {
primeNumbers.add(i,true);
}
for (int i = 2; i < primeNumbers.size(); i++) {
if (primeNumbers.get(i) ) {
for (int j = i+i; j < primeNumbers.size(); j += i) {
primeNumbers.add(j, false);
}
}
}
for (int j = 2; j < primeNumbers.size(); j++) {
if (primeNumbers.get(j)) {
System.out.println(j);

}
}

}
}

我能知道我在使用 Arraylist 时做错了什么吗?如果我想使用 Arraylist 来获得相同的结果,我应该怎么做。

非常感谢您的帮助。

最佳答案

代替

primeNumbers.add(j, false);

你应该使用

primeNumbers.set(j, false);

add()在指定位置添加一个新元素(意味着 ArrayList 增加一个元素),但是 set()只设置指定位置元素的值。

关于java - Array 和 ArrayList 获取素数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350115/

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