50以下の素数を求めて表示する

C:\DATA\Java2\Dos>java Sosu
素数 : 2
素数 : 3
素数 : 5
素数 : 7
素数 : 11
素数 : 13
素数 : 17
素数 : 19
素数 : 23
素数 : 29
素数 : 31
素数 : 37
素数 : 41
素数 : 43
素数 : 47
 -- Press any key to exit (Input "c" to continue) --
50以下の素数を求めて表示するループの例題です。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして Sosu.java の名前で保存して下さい。
        //★ 50までの素数を求める  前田 稔
        public class Sosu
        {   public static void main(String args[])
            {   int     n,i;
                for(n=2; n<50; n++)
                {   for(i=n/2; n%i!=0; i--);
                    if (i==1)   System.out.println("素数 : " + n);
                }
            }
        }
        
  2. Sosu.java をコンパイルして Sosu.class を作成して class オブジェクトを実行して下さい。
    コンパイルの詳細は Java を動かす を参照して下さい。
  3. ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. 素数とは「2以上の1と自分自身以外に約数を持たない整数」のことを言います。
    今回のプログラムは二重のループになっています。
    外側のループは素数を調べる範囲(2〜49)で回ります。
        for(n=2; n<50; n++)
        {    :
             :
        }
    
  2. 内側のループは i=n/2 から始めて n を割り切る i が見つかるまでループします。
    i は毎回デクリメントされるので n がどのような整数値を取ろうとも i==1 になれば必ず割り切れることになります。
  3. for 文自身が「;」で終わっていることに注目して下さい。
    今回はnを割り切るiを見つけることが目的で、ループの{カッコ内}に記述するコードが何もありません。
        {   for(i=n/2; n%i!=0; i--);
    
  4. 内側のループから抜け出した時に「i の値が1のときは n が素数」であることがわかります。
            if (i==1)   System.out.println("素数 : " + n);
        }
    

【演習】

課題1

nの値を2〜10までトレースして素数の求め方を理解して下さい。

課題2

1000までの素数を求めて表示して下さい。
画面が見やすいように表示を工夫しましょう。

超初心者のプログラム入門(Java2)