2017-03-05 5 views
0

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のときの場合であろう)

+0

以下の回答に同意できないかどうかわかりませんが、数字1は素数でも合成でもありません。あなたのプライムテストの対象となるはずです。 –

答えて

0

との最初のforループを開始することができますコントロールはループのためにこれに入ることはありません。

これにより、isPrimeが真となり、1がリストに追加されます。これを防ぐには、が次のifの状態であるかどうかを確認するだけです。あなたはreturnに、この方法から任意の値をしたくない場合は

if (isPrime && i >= 2) { 
    primtall = i; 
    primtallene.add(primtall); 
} 

また、あなたがvoidとして戻り値の型を変更し、return文を削除することができます。

+0

ありがとう!今それは動作します! –

0
for (int j = 2; j < i; j++) { 
      if (i % j == 0) { 
       isPrime = false; 
       break; 
      } 
     } 

i=1場合、。したがって、i = 1は素数として選択されます。

0

1で始める場合、minsteは1になり、コードは2回目のforループに入りません。isPrimetrueになります。

すでに印刷してはならないことがわかっている場合は、確認する必要はありません。 、

初めて
for (int j = 2; j < i; j++) { 
    if (i % j == 0) { 
     isPrime = false; 
     break; 
    } 
} 

iが1になり、j < i条件が故に偽と返すようになります。その代わり、あなたは以下のforループのbecuaseだ2

関連する問題