85の正解: テクノロジ系アルゴリズムとプログラミング

関数 isPrime は、引数として与えられた正の整数が、素数であれば true を、素数でなければ false を戻り値とする。例えば、関数 isPrime を isPrime (2)として呼び出したときの戻り値はtrueである。プログラム中のa, bに入れる字句の適切な組合せはどれか。 [プログラム] ○論理型:isPrime (整数型: num) 整数型:div 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

問85の図

この設問が問うていること

素数判定アルゴリズムの理解と、条件分岐・繰り返し処理における比較演算子の適切な選択について問う設問です。

a=以下, b=と等しい
選択肢の解説: aが「以下」の場合、numが2のときに最初のif文でfalseを返してしまい、2が素数と判定されません。bが「と等しい」の場合、whileループの条件が不適切で、素数判定が正しく行われません。
a=以下, b=より大きい
選択肢の解説: aが「以下」の場合、numが2のときに最初のif文でfalseを返してしまい、2が素数と判定されません。bは「より大きい」で正しいです。
a=より小さい, b=と等しい
選択肢の解説: aは「より小さい」で正しいです。bが「と等しい」の場合、whileループの条件が不適切で、素数判定が正しく行われません。
a=より小さい, b=より大きい正解
選択肢の解説: aは「より小さい」で、1が素数ではないことと2が素数であることを正しく処理できます。bは「より大きい」で、numがdivで割り切れるかどうかのチェックを適切に繰り返し、素数判定を正しく行えます。この組み合わせが正解です。

総合解説

正解はエです。この問題は、素数判定のアルゴリズムを理解し、プログラムの条件分岐(`if`文)と繰り返し処理(`while`文)における適切な比較演算子を選択できるかを問うものです。 まず、`a` について考えます。素数は「1とその数自身以外に正の約数を持たない、1より大きい自然数」と定義されます。したがって、1は素数ではありません。プログラムでは、`num` が素数でない場合に `return false` となるべきです。 ・`isPrime(1)` の場合、`if (1 が 2 [ a ])` が `true` となり `return false` となるのが適切です。この条件を満たすのは `a` が「より小さい」の場合です(1は2より小さい)。 ・また、`isPrime(2)` は `true` を返すと問題文にあります。もし `a` が「以下」だと、`if (2 が 2 以下)` が `true` となり `return false` となってしまい、2が素数と判定されません。したがって、`a` は「より小さい」が正しいです。 次に、`b` について考えます。`while` ループは、`num` が `div` で割り切れるかどうかを順にチェックする部分です。素数判定では、`div` が `num` の平方根を超えるまで、または `div` が `num` と等しくなるまでループを続けるのが一般的ですが、このプログラムの構造では `div` が `num` に到達する前にループを終了させる必要があります。 ・もし `num` が素数(例:7)の場合、`div` が2から始まり、6までチェックして割り切れなければ `return true` となるべきです。`div` が7になったときにループが継続すると、`7 ÷ 7 の余りが0と等しい` が `true` となり `return false` となってしまい、素数と判定されません。 ・したがって、`div` が `num` と等しくなる直前までループを続ける必要があります。つまり、`num` が `div` より大きい間はループを継続し、`num` と `div` が等しくなったらループを終了する、という条件が必要です。この条件を満たすのは `b` が「より大きい」の場合です。 以上の理由から、`a` には「より小さい」、`b` には「より大きい」が入るのが適切であり、選択肢エが正解となります。

執筆・監修: 運営者 KH更新日: 2026-06-30出典: IPA公式PDF(過去問題・解答例)
AIAIにその場で質問(デモ応答)

こんな聞き方もできます(タップで質問)

令和8年度を本番同様のCBT形式で解いてみよう

無料登録なしでも一部体験可能。登録すれば採点・弱点分析・AI教科書まで使えます。

令和8年度の過去問CBTを解く