006 繰り返し(for文のネスト) 008 解答例

public class PrimeNumbers {
    public static void main(String[] args) {
        // 1から100までの素数を表示
        for (int i = 2; i <= 100; i++) {
            boolean isPrime = true;

            // 2からiの平方根までの数で割り切れるか確認
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break; // 割り切れる場合は素数ではないのでループを抜ける
                }
            }

            // 素数の場合は表示
            if (isPrime) {
                System.out.println(i);
            }
        }
    }
}

このプログラムでは、外側のfor文が2から100までの数を取り、内側のfor文で2からその数の平方根までの数で割り切れるかどうかを確認しています。結果、素数であればその数を表示します。素数の判定にはisPrimeというboolean型の変数を使用し、最終的に素数であるかどうかを判断しています。

判定結果の変数をループ内で操作する

上記の解答例の場合、内側のループで素数かどうかの判定結果を表す変数 isPrime を使用します。

  1. 変数 isPrime の初期化:
    • isPrime を最初に true で初期化します。これは、まず素数と仮定するという意味です。
  2. 内側のループでの判定:
    • 内側のfor文で2から i の平方根までの数で割り切れるかどうかを確認します。
    • もし割り切れる数が見つかれば、isPrimefalse に変更し、内側のfor文を抜けます。
  3. 素数の表示:
    • 最終的に isPrimetrue のままであれば、その数は素数であると判断し、表示します。

「006 繰り返し」問題集リスト