ITパスポート 令和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 | |
|---|---|---|
| ア | 以下 | と等しい |
| イ | 以下 | より大きい |
| ウ | より小さい | と等しい |
| エ | より小さい | より大きい |
- ア 以下 と等しい
- イ 以下 より大きい
- ウ より小さい と等しい
- エ より小さい より大きい
答えと解説
✓ これが正解エ より小さい より大きい
解説
aにはより小さいが入り、bにはより大きいが入ります。
この関数は、2から順に割ってみて、割り切れたら素数ではないと判断します。はじめの判定は、そもそも判定の対象にならない値をはじくためのものです。素数のうちいちばん小さいのは2なので、2を下回る値は素数ではありません。よってaにはより小さいが入ります。次の繰返しは、割る数を2から1ずつ増やしながら試すところです。割る数が調べたい値に追いつくまで続ければよいので、調べたい値のほうが割る数より大きい間だけ回します。よってbにはより大きいが入ります。なお、割る数を調べたい値の平方根までに限れば、同じ答えをもっと早く出せます。この関数は、そこまでの工夫はしていません。
ほかの選択肢の解説
- ア 以下 と等しい:aを以下としています。これでは2そのものもはじかれてしまい、2を渡したときに素数ではないと返ることになります。bをと等しいとしている点も、繰返しがほとんど回らなくなります。
- イ 以下 より大きい:aを以下としています。bはより大きいで合っていますが、最初の判定で2をはじいてしまうため、2に対する答えが誤りになります。二つの空欄のうち一方が外れているだけでも、関数としては正しく動きません。
- ウ より小さい と等しい:aはより小さいで合っていますが、bをと等しいとしています。割る数と調べたい値が等しいときだけ回ることになり、2から順に割っていくという進み方になりません。
関連用語
出典:令和8年度 ITパスポート試験 問85(改変:原典の図表をテキストに書き起こした)
解説は当サイト独自のもので、IPA(独立行政法人情報処理推進機構)とは関係ありません。
関連問題
- 令和8年度 問88:
正六角形に 関する 問題 (プログラム) - 令和8年度 問67:
整列に 関する 問題 (引数) - 令和8年度 問62:
ベンチマークテストに 関する 記述 (プログラム) - 令和6年度 問85:
基数に 関する 問題 (引数) - 令和6年度 問62:
配列に 関する 問題 (プログラム)
同じ分野の問題
誤りを見つけたら報告する