素数を探せ
Javaで素数かどうかを判定するプログラムを作りました。
◆動作
プログラムを実行すると数字の入力を求められます。数字を入力し、ENTERキーを押すと、
素数か否かの判定をしてくれます。
1以下の数字を入力すると、素数の定義から説明されたのち、素数でないと言われます。
◆所感
素数が好きなので、今回は折角だからとインターネット上の英知を調べつつ、色々なプログラムを見てみました。高速化を図るために平方根を使ったもの(Java 素数の求め方 - Qiita)など、色々あって興味深かったです。素数判定をするプログラムは問題としてよく出ているようなので、今回久しぶりの公開に踏み切りました。公開するぞと思うと出来上がっても、一日寝かして、その結果問題に気付けたりと緊張感があって良かったです。
◆プログラム
import java.io.*;
class Sosuu
{
public static void main(String[] args)throws IOException
{
//変数置き場
int num; //入力された値を入れる変数
String str; //入力された値を一時保管する変数
System.out.println("\n2以上の整数を入力してください"); //素数かどうか判断するための整数を入力してもらう
//入力した数字を取り込む変数numに入れる作業
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
str=br.readLine();
num=Integer.parseInt(str);
//素数か否かの判断開始
if(num<2) //判定①2以下の整数を入力された場合は素数の定義を表示し、素数でないことを説明する
System.out.println("素数とは、2以上の整数のうち、1と自分自身でしか割り切ることのできない数のことです。そのため"+num+"は素数ではありません。");
for(int i=2;i<=num;i++){
//System.out.println("iは"+i+"、numは"+num); //動作確認用。処理には無関係なのでいつ消しても構わない。
if(num==i) //判定②i=numまで繰り返せてのであれば素数
System.out.println(num+"は素数です。");
else if(num%i==0){ //判定③2~num-1までの数字で割り切れれば素数ではない
System.out.println(num+"は素数ではありません。");
break; //素数ではないことが判明したのでここでループを抜ける
}
}
}
}
◆参考文献
動作確認に使った素数は、以下の本で調べました。
Newtonライト2.0 素数(Newtonライト2.0 素数 | ニュートンプレス (newtonpress.co.jp))
決してマネしないでください。(3)(『決してマネしないでください。(3)<完>』(蛇蔵)|講談社コミックプラス (kodansha.co.jp))