我想找到素数给定的范围内使用 ArrayList
. 我已经完成了以下代码。
import java.util.ArrayList;
import java.util.Iterator;
public class PrimeNumbers {
public static void main(String args) {
PrimeNumbers aaa=new PrimeNumbers();
Iterator<Integer> itr = aaa.printAllPrime(1, 10).iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
public ArrayList<Integer> printAllPrime(int k, int j) {
ArrayList<Integer> arrlist = new ArrayList<Integer>();
int count=0;
for(int i=k;i<=j;i++) {
for(int l=1;l<=i;l++) {
if(i%l == 0) {
count++;
}
}
//System.out.println(i+" "+count);
if(count == 2) {
arrlist.add(i);
}
}
return arrlist;
}
}
预期: [2, 3, 5, 7]
当前结果: [2, 4, 3, 5, 10]
我刚接触 java ,请帮我找出哪里做错了。谢谢您。
2条答案
按热度按时间pkln4tw61#
在代码的这一部分中,您可以逐字检查,例如4%2==0,是否为ofc,因此4也被放入数组中。此外,通过一些简单的数学运算,您的代码可以得到显著的改进。
所以,如果你测试所有的数字,直到平方根,你可以放心,这个数字是素数。例如,23的平方根约为4.8,因此您可以测试23,看看它是否可以除以2、3或4。不可能,所以23是素数。
在这里阅读更多
mbyulnm02#
初始化
count
在第一个for
循环,在第二个循环之前。因为计数从未重置为0
每次迭代之后,您都会得到错误的数字。那样的话,
count
将为每个单独的数字。希望这对你有用!