2017-06-20 3 views
0

だから私は素数であるかどうかをチェックし、それがarraylistに追加されるべきかどうかをチェックするはずのこの小さなプログラムを書いた。問題は、それは単に番号3を追加して停止するということです。誰かがそれがなぜそんなに動くのか私に説明してもらえますか?私のプログラムは素数を計算しなければならないが、最初の数字の後で停止する

import java.util.ArrayList; 
public class main{ 
    public static void main(String args[]){ 
     ArrayList Primzahlen=new ArrayList(); 
     int current=1; 
     boolean prim=true; 
     for(int a=0;a<100;a++){ 
      for(int b=2;b<current;b++){ 
       if(current%b==0){ 
        prim=false; 
       } 
       if(b==current-1){ 
        if(prim==true){ 
         Primzahlen.add(current); 
        } 
       } 
      } 
      current++; 
     } 
     System.out.println(Primzahlen); 
    } 
} 
+3

近い真=プリム。 – hatchet

+4

'current%b == 0'なら' prim = false'を設定しますが、決してそれを真に戻すことはありません。 –

+0

ありがとうございます。私はそのような明白な間違いを逃してはならないと思う。 – LuisIsLuis

答えて

0

現在の値をチェックして終了したら、primをtrueにリセットする必要があります。

public static void main(String args[]){ 
     ArrayList Primzahlen=new ArrayList(); 
     int current=1; 
     boolean prim=true; 
     Primzahlen.add(2); 
     for(int a=3;a<100;a++){ 
      for(int b=2;b<current;b++){ 
       if(current%b==0){ 
        prim=false; 
       } 
       if(b==current-1){ 
        if(prim==true){ 
         Primzahlen.add(current); 
        } 
       } 
      } 
      prim=true; 
      current++; 
     } 
     System.out.println(Primzahlen); 
    } 

お知らせあなたは、デバッガでコードをステップ実行しようとする必要があり、現在++

+0

また、コメント内で@ saka1029が示唆しているように、 'boolean prim = true;'を1行下に移動してください。 –

+0

問題を解決する多くの方法。コメントを見る前に投稿しました。 –

関連する問題