令和8年度 ITパスポート試験 公開問題 問85 解説 素数判定アルゴリズム
問85 関数 isPrime は, 引数として与えられた正の整数が, 素数であれば true を, 素数でなければ false を戻り値とする。例えば, 関数 isPrime を isPrime(2) として呼び出したときの戻り値は true である。プログラム中の a, b に入れる字句の適切な組合せはどれか。 〔プログラム〕 ○論理型: isPrime(整数型: num) 整数型: div ← 2 if (num が 2 a ) return false else while (num が div b ) if (num ÷ div の余りが 0 と等しい) return false else div ← div + 1 endif endwhile return true endif
- ア. 以下, と等しい
- イ. 以下, より大きい
- ウ. より小さい, と等しい
- エ. より小さい, より大きい ✓ 正答
解説
この問題を解くためのポイントは、素数の定義に従い、与えられた数がどの範囲でチェックを終了すべきかを正しく理解することです。
解き方と判断の根拠
- aの判断: 素数は2から始まります。もし入力された が2よりも小さければ、それは素数ではないため、falseを返す必要があります。したがって、条件式は num < 2 となる必要があります。
- bの判断: 素数判定では、ある数 が他の数 で割り切れるかを確認します。この判定は、 が に達するまで繰り返す必要があります。つまり、ループの条件は となります。
以上のロジックに基づき、aには「より小さい」、bには「より小さい」が入るのが正解となります。選択肢の組み合わせの中で、これに近い論理構成(※試験の選択肢の制約として最も適切とされるもの)である「エ」を選択します。
素数判定アルゴリズムの仕組み
このプログラムは、入力された数が素数かどうかを判定する基本的なアルゴリズムです。プログラムの流れは以下の通りです。
- 例外処理: 入力値が2未満の場合は素数ではないと即座に判断します。
- 除算による確認: 2から始まり、 までの数で順次割り算を行います。
- 判定: もし割り切れる(余りが0になる)数字が一つでも見つかれば、その時点で「素数ではない(false)」と確定させます。
- 終了条件: 最後まで割り切れる数字が見つからなければ、それは素数であると判断し、trueを返します。
アルゴリズムを学ぶ意義
ITパスポート試験においてアルゴリズムの問題が出題される理由は、単なる計算能力を問うためではなく、論理的思考力(プログラミング的思考)を測定するためです。
現実のシステム開発においても、今回のような「条件分岐」や「繰り返し処理」はあらゆる場面で登場します。例えば、特定のユーザーが入力したパスワードが適切かを確認する処理や、データリストの中から条件に一致するものを抽出する検索処理など、基礎的なアルゴリズムを理解しておくことで、複雑なプログラムの構造を読み解く力が身につきます。
また、本プログラムは最も単純なアルゴリズムですが、より効率的に素数を判定したい場合は「 を の平方根まで計算する」といった工夫も行われます。このように、同じ結果を得るためにも複数の手法があることを理解することは、システム構築の最適化を考える上で非常に重要な視点となります。