1
/
5

素数を探せ

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)