素数判定プログラム

正解は エ です。 素数は「1とその数自身以外に約数をもたない2以上の整数」です。プログラムはまず 2未満(1以下)なら素数ではない と判定し、それ以外は div=2, 3, … で num を割って、割り切れたら false を返します。 a:最初の判定 num が2 より小さい → false(1は素数ではない)。 「以下」にすると num=2 も false になってしまいます。2は素数なので誤りです。 b:割る数をどこまで試すか num が div より大きい 間だけ繰り返す → div は 2 〜 num−1 を順に試す。 「と等しい」にすると、num=7 のように最初から 7≠2 の場合はループに入らず、何も調べずに true を返してしまいます(num=9 でも true になる)。 num a の判定 while で試す div 結果 1 2より小さい → false − false 2 2より小さくない 2>2 でないので試さない true 7 2より小さくない 2, 3, 4, 5, 6 で割り切れない true 9 2より小さくない 2 → 3 で割り切れる false いくつかの値(特に境界の 1, 2 と、素数・合成数)を入れて追いかけると、a は「より小さい」、b は「より大きい」の組合せ(エ)だけが正しく判定できます。

関数isPrimeは,引数として与えられた正の整数が,素数であればtrueを,素数でなければfalseを戻り値とする。プログラム中の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

出典令和8年度 ITパスポート試験 公開問題 問85

a

b

ア

以下

と等しい

イ

以下

より大きい

ウ

より小さい

と等しい

エ

より小さい

より大きい