プログラミング初心者におすすめの課題の1つがJavaでの素数判定のプログラムです。
素数を判定するためにどのようなロジックが必要か。
また、そのロジックをJavaで書くにはどのような方法があるか。
この2つを復習して身につけるのに、Javaで素数判定のプログラムを作ってみましょう。

Javaで素数判定のプログラムって、難しそうだね。。。



素数判定プログラムを作るのは、最初は大変かもやけど一緒に頑張っていこ!
記事の信頼性:未経験からIT業界の受託会社へ転職に成功。高校教諭から転職後もJavaの勉強を続けている「しう」がJavaで素数を判定するプログラムをわかりやすく伝えています。
ちなみに、Javaの学習を進めるにあたって、Udemyの講座がおすすめです!
Javaのおすすめ講座まとめも書いたので一度見てみてくださいね。


素数とは


素数の定義は、「1と自分自身以外に約数を持たない数」のことです。
この説明だと少し、わかりにくいですね。
1より大きい数字で、その数字以外のどんな数字でも割り切れない数字のことです。



???



具体例を見ていこか!
こんなこと知っていると思う人もいるかもしれません。
しかし、素数がどんな数字かの認識をそろえることは大切なことなので、再度確認しました。
素数を判定するプログラム【Java】


では、いよいよ素数をJavaで判定するプログラムを見ていきましょう。
public class PrimeNumber {
public static void main(String[] args) {
//判定用の変数judgeを用意
boolean judge = true;
//判定したい数字をnとする
int n = 8;
//nを2からn-1までの全ての数字で割って、一度でも割り切れる数字があれば素数でない(judge=false)
for(int i = 2; i < n; i++) {
if(n%i == 0) {
judge = false;
break;
}
}
//judge=trueなら素数、judge=falseなら素数でない
if(judge) {
System.out.println(n +"は素数です");
}else {
System.out.println(n +"は素数ではありません");
}
}
}
このプログラムを実行して、「8は素数ではありません」と表示されれば正解です。
今回はn=8で素数の判定をしましたが、他の数字に変えても判定できます。
素数判定プログラムで入力した数字を利用したい場合は、こちらの記事が参考になります。


Javaで素数を判定するプログラムの解説


Javaで素数を判定するプログラムの解説をおこなっていきます。
素数判定プログラムで大事なポイントは8行目のfor文の処理です。
for(int i = 2; i < n; i++) {
if(n%i == 0) {
judge = false;
break;
}
}
の部分でiが2, 3, 4, 5, 6, 7に変わっていきます。
そして、その2~7の数字で毎回n(=8)を割れるか試していきます。
一度でも割りきれたら、judge=false(素数でない)になります。
この時、大切なことは、judge=falseの行のすぐ後に
break;
を書くことです!
この一行がないと8を i = 2 で割り切れて、計算を終えないといけないのに
i = 3 の計算に移ってしまいます。
最後に、judge=trueかjudge=falseかで素数かどうかの判定をしてあげましょう。
素数判定の練習問題


問題
ある数字と、(ある数字-2)の両方が素数であるかどうか判定せよ。
例:7と5(=7-2)の両方が素数かどうか判定せよ。
素数判定プログラムの問題の答えはこのブログの最後に書いてあります。
まとめ
いかがでしたか?
今回は
- 素数とは
- 素数を判定するプログラム【Java】
- Javaで素数を判定するプログラムの解説
- 素数判定の練習問題【Java】
の順でご紹介しました。
素数判定プログラムのロジックは、プログラミングの勉強に役に立ちます。
また、Javaの勉強を進めるなら、UdemyはJavaを理解するスピードを上げてくれます。
👇 Udemyおすすめ講座【厳選済み】


素数判定の練習問題【答え】
public static void main(String[] args) {
//判定用の変数judgeを用意
boolean judge = true;
boolean judgeSecond = true;
//判定したい数字をnとする
int n = 7;
//nを2からn-1の全ての数字で割って、一度でも割り切れる数字があれば素数でない(judge=false)
for(int i = 2; i < n; i++) {
if(n%i == 0) {
judge = false;
break;
}
}
//(n-2)を2から(n-3)の全ての数字で割って、一度でも割り切れる数字があれば素数でない(judgeSecond=false)
for(int i = 2; i < n-2; i++) {
if((n-2)%i == 0) {
judgeSecond = false;
break;
}
}
//素数かどうかの判定
if(judge && judgeSecond) {
System.out.println(n + "と" + (n-2) +"は素数です");
}else {
System.out.println(n + "と" + (n-2) + "のどちらかは素数ではありません ");
}
}
☟あわせて読みたい 「しう」のオススメブログ






コメント