ITパスポート 令和8年度85

問題

テクノロジ系

問85 関数 isPrime は,引数として与えられた正の整数が,素数であれば true を,素数でなければ false を戻り値とする。例えば,関数 isPrime を isPrime(2) として呼び出したときの戻り値は true である。プログラム中の a,b に入れる字句の適切な組合せはどれか。

選択肢

  • 以下,と等しい
  • 以下,より大きい
  • より小さい,と等しい
  • より小さい,より大きい

解説

正解:

概要

この問題は,素数判定の擬似言語プログラムにおいて,a・bに入れる条件を問うものです。素数の判定アルゴリズムの動作を正しく理解することがポイントです。

正解の理由

素数判定では,2からn-1(またはnの平方根以下)の整数iで割り切れるものが一つもなければ素数です。プログラムでは,iを2から順に増やしながら「iがn未満(より小さい)」の間ループし,各iでn÷iの余りが「0より大きい(割り切れない)」状態が続けば素数と判定します。a=より小さい,b=より大きい,エが正解です。

動作確認(n=7の場合)

・i=2: 7÷2=余り1 → 余りが0より大きい → 継続

・i=3: 7÷3=余り1 → 余りが0より大きい → 継続

・i=4: 7÷4=余り3 → 余りが0より大きい → 継続

・i=5,6: 同様に割り切れない

→ 全てのiで割り切れなかった → 素数→trueを返す

各選択肢の解説

ア(×): 「以下」だとi=nのときもループする可能性があり,nは必ずn÷n=0で割り切れてしまいます。

イ(×): 「以下」は誤り。「と等しい」は余りが0かどうかの判定で誤りです。

ウ(×): 「より小さい」は正しいですが,「と等しい」は余りの判定として誤りです(余り=0は割り切れる=素数でない)。

エ(〇): a=より小さい(i<n),b=より大きい(余り>0)が正しい組合せです。

ポイント

素数の定義は「1とそれ自身以外に約数をもたない2以上の整数」です。2はiが2未満の条件でループが実行されないため,trueが返されます(例外的に処理されます)。