過去問解きまくり研究所 ホーム

アルゴリズムとプログラミング|令和8年度 ITパスポート試験 問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
```

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

解説

aにはより小さいが入り、bにはより大きいが入ります。

この関数は、2から順に割ってみて、割り切れたら素数ではないと判断します。はじめの判定は、そもそも判定の対象にならない値をはじくためのものです。素数のうちいちばん小さいのは2なので、2を下回る値は素数ではありません。よってaにはより小さいが入ります。次の繰返しは、割る数を2から1ずつ増やしながら試すところです。割る数が調べたい値に追いつくまで続ければよいので、調べたい値のほうが割る数より大きい間だけ回します。よってbにはより大きいが入ります。なお、割る数を調べたい値の平方根までに限れば、同じ答えをもっと早く出せます。この関数は、そこまでの工夫はしていません。

ほかの選択肢はなぜ違うのか

この問題に関係する言葉

出典:令和8年度 ITパスポート試験 問85(改変:原典の図表をテキストに書き起こした)

この問題を演習で解く

同じ単元をまとめて解くならアルゴリズムとプログラミングへ。

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)