素数とは
そもそも素数とは何なのか(ほとんどの人はわかっていると思いますが)
素数(そすう、英: prime あるいは prime number)とは、2 以上の自然数で、正の約数が 1 とその整数自身のみであるもののことである。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Javaで素数判定プログラム書いてみた
・自然数以外が入力されるのを防ぐために、入力を求める文言を"自然数を入力してください"としました
・1は自然数ではないので最初にif文で除外しました
多くの素数判定プログラムでは、自然数が入力されるのが暗黙の了解みたいになっていますが、"自然数を入力してください: "のように指定してあげると親切?だと思います。
Pythonですが、下のリンク先内の実装例では、 n = int(input('素数判定したい3以上の整数nを入れてね。n='))と親切に書かれていました。
https://club.informatix.co.jp/?p=12181
私が書いたコードはこちらです。
//入力された自然数が素数かどうか判定するプログラム
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("自然数を入力してください: ");
int n = sc.nextInt();
boolean isPrime = true;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
isPrime = false;
break;
}
}
if (n == 1) {
System.out.println(n + "は素数ではありません。");
} else if (isPrime) {
System.out.println(n + "は素数です。");
} else {
System.out.println(n + "は素数ではありません。");
}
}
}
2から100までの範囲の素数を出力する
・ある数が素数かどうかを判定するためには、その数の平方根までの数で割り切れるかを確認すれば充分であることを利用して効率的なプログラムにしました。
public class PrimeNumber {
public static void main(String[] args) {
boolean[] Prime = new boolean[101];
for (int k = 1; k < Prime.length; k++) {
Prime[k] = true;
}
// 素数判定
for (int i = 2; i < Prime.length; i++) {
for (int r = 2; r * r <= i; r++) {
if (i % r == 0) {
Prime[i] = false;
break;
}
}
}
// 素数の出力
for (int j = 2; j < Prime.length; j++) {
if (Prime[j]) {
System.out.println(j);
}
}
}
}
最後に
素数判定のアルゴリズムは色々あるので下の記事などを参考にしてください。
https://qiita.com/ppza53893/items/e0f464340d6f97760cd5