/* * <日付を入力> * 基礎プログラミングおよび演習 * T.Suzuki * 演習5.6 * 二桁の自然数(10〜99)をコマンド引数として入力すると, * 素因数分解して出力するプログラムを適当な制御構文を * 用いて作成せよ. */ public class PrimeFactorization { public static void main(String[] args) { // メインメソッド // 値を直接代入する場合 // 10〜99までの整数を代入 // int num = 98; // 素因数分解する変数 // コマンドライン引数から値を代入する場合 int num; // 素因数分解する変数 // コマンドライン引数が入力されない場合の処理 if ((args.length == 1) == false) { System.out.println("コマンドライン引数として10〜99までの整数を一つ与えてください"); System.exit(1); } // コマンドライン引数を整数型にして num に代入 num = Integer.parseInt(args[0]); // 素因数分解と素数の判定 if ( num < 10 || 99 < num ) { // 二桁以外の整数は除く System.out.println("計算範囲外です."); } else if ( num % 2 == 0 || num % 3 == 0 || num % 5 == 0 || num % 7 == 0 ) { // 素数でない場合(2, 3, 5, 7いずれかで割り切れる場合,素因数分解 System.out.print(num + " = "); // 2で割り切れる間は,「2 *」を表示 while ( 2 < num && num % 2 == 0 ) { System.out.print("2 × "); // 「2 *」を表示 num /= 2; // 数値を2で割る } // 3で割り切れる間は,「3 *」を表示 while ( 3 < num && num % 3 == 0 ) { System.out.print("3 × "); // 「3 *」を表示 num /= 3; // 数値を3で割る } // 5で割り切れる間は,「5 *」を表示 while ( 5 < num && num % 5 == 0 ) { System.out.print("5 × "); // 「5 *」を表示 num /= 5; // 数値を5で割る } // 7で割り切れる間は,「7 *」を表示 while ( 7 < num && num % 7 == 0 ) { System.out.print("7 × "); // 「7 *」を表示 num /= 7; // 数値を7で割る } // 最後に余った数字を表示して改行 System.out.println(num); } else { // 素数の場合 // 素数の表示 System.out.println(num + " は素数です."); } } // main } // class PrimeFactorizationSample