我有一個使用ArrayList和toArray從數字列表中查找質數的方法。大部分的代碼工作,除了當我打印參數1和10時,它打印1,2,3,5,7。因此它打印1到10之間的素數,但它也打印出1.我認爲錯誤出現在第一個或第二個for循環中,但我不確定。使用toArray查找arraylist的素數,打印錯誤
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需要我。
任何人都可以幫助識別代碼中的錯誤?
在此先感謝!
我不知道我是否不同意以下任何答案,但數字1既不是素數也不是複合數。它應該受到你的首要考驗。 –