Method で素数を求める

C:\DATA\Java2\Dos>java SosuMet
素数 : 2
素数 : 3
素数 : 5
素数 : 7
素数 : 11
素数 : 13
素数 : 17
素数 : 19
素数 : 23
素数 : 29
素数 : 31
素数 : 37
素数 : 41
素数 : 43
素数 : 47
 -- Press any key to exit (Input "c" to continue) --

メソッドとはC言語の関数と同じで、プログラムのステートメントをひとまとまりにする機能です。
今回は素数か合成数かを判定してくれる test(int n) メソッドを定義します。

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

プログラムの作成

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

プログラムの説明

引数で渡されたnが素数か合成数かを判定する Method です。
static boolean test(int n)
{   int     i;
    for(i= n/2; n%i != 0; i--);
    if (i == 1)   return true;
    return false;
}

  1. boolean は true(Yes) か false(No) の二値を取るデータ型で、nが素数のときは true を、 合成数のときは false をリターンします。
        static boolean test(int n)
        {
        }
        
  2. i を n/2 から始めて(i= n/2)、n が i で割り切れるまで(n%i != 0)、i をカウントダウンしながら(i--)繰り返します。
    ループから抜け出したとき i==1 であれば n は素数なので true をリターンします。
        for(i= n/2; n%i != 0; i--);
        if (i == 1)   return true;
        
  3. ループから抜け出したとき i != 1 の時は合成数なので false をリターンします。
    素数の求め方は 50以下の素数を求めて表示する を参照して下さい。
        return false;
        
  4. 比較式の結果は true または false になるので、次のように比較結果を直接リターンするすることもできます。
        return (i==1);
        
  5. Method(test) を呼び出すコードです。
    true(Yes) が返されたとき、nを素数として表示します。
    boolean 型は if (test(n)==true) を if (test(n)) と書くことが出来ます。
    if (test(n)) System.out.println("素数 : " + n);

【演習】

課題1

引数で渡された値が奇数のとき true を、偶数のとき false を返すメソッド(Kisu) を作成して下さい。

課題2

引数で渡された二個の値の内、大きい方の値を返すメソッド(Max) を作成して下さい。
この関数の形式は次のようになります。
static int Max(int n1, int n2)
{
}

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