こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 Javaで1から100までの範囲で素数を求めて表示するを
- サンプルプログラム
- 実行結果
- プログラム解説
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
IntelliJ IDEAのエディション | Community(無料版) |
IntelliJ IDEAのバージョン | 2021.3.2 |
プロジェクト | Javaプロジェクト |
SDK | Oracle OpenJDK version17.0.2 |
Javaを動かすためにIntelliJ IDEAを使っています。
IntelliJ IDEAのインストールは、下の記事をご参考ください。
解説で使うJavaプログラムは、Sampleプロジェクトのsampleパッケージ内にある、とします。
1から100までの範囲で素数を求めて表示するサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package sample; import java.util.stream.IntStream; public class Sample { public static void main(String[] args) { System.out.println("■1から100までの範囲で素数を求めて表示するサンプルプログラム"); IntStream.range(1, 101) .filter(i -> isPrimeNumbers(i)) .forEach(primeNumber -> System.out.println(primeNumber)); } /** * 素数判定 * @param number 判定する数 * @return true:素数、false:素数でない */ public static boolean isPrimeNumbers(int number) { // 2未満は素数ではない if (number < 2) { return false; } return IntStream.range(2, number).noneMatch(i -> number % i == 0); } } |
実行結果
Javaプログラムを実行します。
実行のやり方は
- プログラムを右クリックして実行
- 実行タブから実行
- ガターから実行
の3種類あるので、いずれかで実行します。
詳しい解説は以下の記事をご参考ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
■1から100までの範囲で素数を求めて表示するサンプルプログラム 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 |
素数が抽出できていることが確認できました。
プログラム解説
プログラム解説を
- mainメソッド
- 素数判定メソッド
で解説していきます。
mainメソッド
1から100までの数値を作成して素数を抽出して表示している
1 2 3 |
IntStream.range(1, 101) .filter(i -> isPrimeNumbers(i)) .forEach(primeNumber -> System.out.println(primeNumber)); |
の解説をします。
IntStream.rangeメソッドで1から100までのIntStreamを作成します。
filterメソッドで抽出条件に素数判定メソッドを使って素数のみを抽出します。
最後にforEachメソッドで素数を表示しています。
mainメソッドで使っているメソッドについては、詳しくはこちらの記事をご参考ください。
【Java】Stream APIのIntStream.rangeメソッドについて解説します
filterメソッド
【Java】Stream APIのfilterメソッドについて解説します
forEachメソッド
【Java】Stream APIのforEachメソッドについて解説します
素数判定メソッド
素数判定の肝である
1 2 3 4 5 6 7 8 |
public static boolean isPrimeNumbers(int number) { // 2未満は素数ではない if (number < 2) { return false; } return IntStream.range(2, number).noneMatch(i -> number % i == 0); } |
の解説をします。
素数は2以上で1とその数自身以外に約数を持たない数のことです。
なので、最初のif文で2未満はfalseで返します。
return文では、まずIntStream.rangeメソッドで2からnumber-1までのIntStreamを作成します。
作成したIntStreamを使って、noneMatchメソッドでnumberが1以外の約数が存在しないことを判定しています。
約数がない、つまり素数であればtrue、素数でなければfalseを返しています。
素数判定で使っているメソッドについては、詳しくはこちらの記事をご参考ください。
【Java】Stream APIのIntStream.rangeメソッドについて解説します
noneMatchメソッド
【Java】Stream APIのnoneMatchメソッドについて解説します
まとめ:素数を求めてみよう!
以上がJavaで1から100までの範囲で素数を求めて表示するサンプルプログラムでした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント