プログラミング初心者におすすめの課題の1つがJavaでの素数判定のプログラムです。素数を判定するためにどのようなロジックが必要で、そのロジックをJavaで書くにはどのような方法があるか。この2つを復習して身につけるのに、Javaで素数判定のプログラムを作ってみましょう。
Javaで素数判定のプログラムって、難しそうだね。。。
素数判定プログラムを作るのは、最初は大変かもやけど一緒に頑張っていこ!
記事の信頼性:未経験からIT業界の受託会社へ転職に成功。現在は自社開発企業で働いている「しう」がJavaで素数を判定するプログラムについて解説しています。
ちなみに、Javaの学習を進めるにあたって、Udemyの講座がおすすめです!
Javaのおすすめ講座まとめも書いたので一度見てみてくださいね。
素数とは
wikipediaによると素数は下記のように定義されています。
つまり、1より大きい数字でその数字以外のどんな数字でも割り切れない数字のことです。具体的な例としては次のようになります。
こんなこと知っていると思う人もいるかもしれませんが、素数がどんな数字かの認識をそろえることは大切なことなので、再度確認しました。
素数を判定するプログラム【Java】
ここから素数をJavaで判定するプログラムについて見ていきます。具体的なコードの例は下記のとおりです。
public class PrimeNumber {
public static void main(String[] args) {
//判定用の変数isPrimeNumを用意
boolean isPrimeNum = true;
//判定したい数字をnとする
int n = 8;
if(n < 2) {
isPrimeNum = false;
} else {
//nを2からn-1までの全ての数字で割って、一度でも割り切れる数字があれば素数でない(isPrimeNum=false)
for(int i = 2; i < n; i++) {
if(n % i == 0) {
isPrimeNum = false;
break;
}
}
}
//isPrimeNum = trueなら素数、isPrimeNum = falseなら素数でない
if(isPrimeNum) {
System.out.println(n +"は素数です");
}else {
System.out.println(n +"は素数ではありません");
}
}
}
このプログラムを実行して、「8は素数ではありません」と表示されれば正解です。今回はn=8で素数の判定をしましたが、nの部分を他の数字に変えても判定できます。今回の例ではネストが多くなり実際の開発現場ではレビューで修正が入ると思いますが、今回は素数の解説のわかりやすさ優先で記載しています。
素数判定プログラムで入力した数字を利用したい場合は、こちらの記事が参考になります。
Javaで素数を判定するプログラムの解説
Javaで素数を判定するプログラムの解説をおこなっていきます。素数判定プログラムで大事なポイントは8行目のfor文の処理です。
for(int i = 2; i < n; i++) {
if(n%i == 0) {
isPrimeNum = false;
break;
}
}
の部分でiが2, 3, 4, 5, 6, 7に変わっていきます。そして、その2~7の数字全てで n (=8) を割れるか試していきます。一度でも割りきれたら、isPrimeNum = false(素数でない)になるため、今回はi = 2の時、8➗2が割り切れるため素数でないという判定がされます。
このコードで大切なことは、isPrimeNum=falseの行のすぐ後に
break;
を忘れずに書くことです!
この一行がないと8を i = 2 で割り切れて計算を終えないといけないのに、i = 3 の計算に移ってしまいます。最後に、isPrimeNum=trueかisPrimeNum=falseかで素数かどうかの判定をしてあげましょう。
素数判定の練習問題
問題
ある数字と、(ある数字-2)の両方が素数であるかどうか判定せよ。ただしある数字は3以上とする。
例:7と5(=7-2)の両方が素数かどうか判定せよ。
素数判定プログラムの問題の答えはこのブログの最後に書いてあります。
まとめ
いかがでしたか?今回は下記の順番で素数判定プログラムの作り方についてご紹介しました。
- 素数とは
- 素数を判定するプログラム【Java】
- Javaで素数を判定するプログラムの解説
- 素数判定の練習問題【Java】
素数判定プログラムのロジックは、特にプログラミング初心者の人にとってプログラミングの勉強に役立ちます。また、他の素数以外の内容も含めてJavaの勉強をするなら、Udemyで動画を見ながらのハンズオンは理解がしやすいです。 興味がある人は下にURLも記載しているので参考にしてみてくださいね。
👇 Udemyおすすめ講座【6選】
素数判定の練習問題【答え】
public static void main(String[] args) {
//判定用の変数isPrimeNum, isPrimeSecondNumを用意
boolean isPrimeNum = true;
boolean isPrimeSecondNum = true;
//判定したい数字をnとする
int n = 7;
//nを2からn-1の全ての数字で割って、一度でも割り切れる数字があれば素数でない(isPrimeNum=false)
for(int i = 2; i < n; i++) {
if(n%i == 0) {
isPrimeNum = false;
break;
}
}
if(n - 2 < 2) {
isPrimeNum = false;
} else {
//(n-2)を2から(n-3)の全ての数字で割って、一度でも割り切れる数字があれば素数でない(isPrimeSecondNum=false)
for(int i = 2; i < n-2; i++) {
if((n-2)%i == 0) {
isPrimeSecondNum = false;
break;
}
}
}
//素数かどうかの判定
if(isPrimeNum && isPrimeSecondNum) {
System.out.println(n + "と" + (n-2) +"は素数です");
}else {
System.out.println(n + "と" + (n-2) + "のどちらかは素数ではありません ");
}
}
☟あわせて読みたい 「しう」のオススメブログ
コメント