我有一种使用 ArrayList 和 toArray 从数字列表中查找素数的方法。大部分代码都有效,除了当我打印参数 1 和 10 时,它会打印 1、2、3、5、7。所以它打印 1 到 10 之间的素数,但它也打印 1。我认为错误出现在第一个或第二个 for 循环中,但我不确定。
public int primtall(int a, int b) {
ArrayList<Integer> primtallene = new ArrayList<>();
int primtall = 0;
int største;
int minste;
if(a == b){
primtall = 0;
}
else {
if(a > b) {
største = a;
minste = b;
}
else if (a < b){
minste = a;
største = b;
for(int i = minste; i <= største; i++) {
boolean isPrime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primtall = i;
primtallene.add(primtall);
}
}
}
}
Integer[] numrene = new Integer[primtallene.size()];
numrene = primtallene.toArray(numrene);
for(Integer nummer : numrene){
System.out.println("Primtall = " + nummer);
}
return 0;
}
不要介意最后一个返回值,我只是添加了它,因为 BlueJ 要求我这样做。
任何人都可以帮助识别代码中的错误吗?
提前致谢!