ArrayListとtoArrayを使って数字のリストから素数を見つける方法があります。コードの大部分は、パラメータ1と10を印刷しているときに1,2,3,5,7を印刷していることを除いて動作します。したがって、1から10までの素数が出力されますが、1も出力されます。エラーは1回目または2回目の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が私に必要とするので、最後の戻り値を気にしないでください。
誰でもコードのエラーを特定するのに役立つことができますか?
ありがとうございます!上記ループが入力されることはありませんとisPrime = false;
が実行されることはないであろう(minste = 1のときの場合であろう)
以下の回答に同意できないかどうかわかりませんが、数字1は素数でも合成でもありません。あなたのプライムテストの対象となるはずです。 –