【第12回】初心者のJavaプログラミング【if文、for文の続き】
こんにちは。今日も暑くてだるいです。
今日はこの間やったことを元に実践とうか実際にif,forを使ってみよう的な感じでした。
その中で一番わからなかったなーと思ったのが、入力された数値が素数かどうかを判定するプログラム。
数学なんて忘れてますよー。素数って高校でやるんだっけ?習った記憶はあるけどあまり覚えていない。
てなわけでまずは素数の意味から先生が説明してくれましたw
「素数(Prime Number)」
1と自分自身以外に約数をもたないもの。
です!
いつものごとく例を。
15で考えてみましょう。
15は{1, 3, 5, 15}で割り切れますね。
ここでいう自分自身とは15のことです。
これをみると15は1と自分自身(15)以外に約数を持っていますね。
よって15は素数ではないのです。
次に11で考えよう。
11は{1, 11}で割り切れます。
1と自分自身(11)以外に約数を持たないので、
11は素数です。
中学だか高校の時はこんな定義なんてきっちり覚えておかなかったなー。あの頃からこういうこともちゃんと意識していれば良かったぜw
そんなこんな素数の定義やらを加味してコードを書くとこんな感じになる。
class PrimeNumber { public static void main( String args[] ) { // String型のコマンドライン引数をint型に変換 int num = Integer.parseInt(args[0]); if (num != 1) { // 判定用の変数 boolean prime = true; // 入力された文字を2から割っていく。 // その余りが0になったら1と入力された数自身以外で割れたことになる。 // その場合はprimeにfalseを入れる for (int i = 2; i <= num - 1; i++) { if ((num % i) == 0) { prime = false; } } if (prime == true) { // 割り切れなかった(余り0にならない)場合 System.out.println("素数だよー"); } else { // 割り切れた場合 System.out.println("素数じゃないよー"); } } else { // 1は素数ではないので System.out.println("1かよ!"); } } }
コードのコメントを見てもらえば何をやっているか分かると思います。