令和8年度 問85

新しい制度のシラバス案にはない中身です(今の制度の問題)

令和8年度 問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:より小さい、b:より大きい

ポイント

素数かどうかを調べる関数のプログラムの、条件の字句の組合せを選ぶ問題です。

考え方と解き方

「以下」「より小さい」「より大きい」の向きを、すぐ取りちがえます。2 という最小の素数の場合を試すと、a が決まります。

  1. a は、素数でない数を弾く条件です。1 以下の数は素数ではありませんが、2 は素数なので、2 を弾いてはいけません。したがって、「2 より小さい」が入ります。「2 以下」だと、素数の 2 が false になってしまいます。
  2. b は、割る数 div を 2 から 1 ずつ増やして、num の手前まで試す繰返しの条件です。num が div より大きい間、繰り返します。num = 9 なら、div = 3 で割り切れて false になります。num = 2 なら、繰り返さずに true になります。
  3. したがって、適切な組合せは エ です。
  4. 参考:擬似言語を使ったアルゴリズムとプログラミングは、新しい制度では大分類5 システムの開発・運用(中分類22 アルゴリズム・プログラミング)に入り、ITパスポートの範囲外です。

ほかの選択肢

  • ア a:以下、b:と等しい としていますが、どちらも不適切です。2 が false になり、繰返しも動きません。
  • イ a:以下、b:より大きい としていますが、a が「以下」だと、素数の 2 が false になります。
  • ウ a:より小さい、b:と等しい としていますが、b が「と等しい」だと、num が 2 のときだけ繰返しに入って false になり、3 以上の数は繰り返さずに全て true になります。

覚えておくこと

  • 素数の判定:2 より小さい数は素数でない。2 から順に割って、割り切れる数があれば素数でない。

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

前の問題次の問題