基本情報技術者試験の令和5年度の公開問題(科目B)を解いてみよう。


正解:ア
この問題は、素数を求めるプログラムの空欄 a と b に正しい選択肢を入れるものである。
問題文「関数findPrimeNumbers は,引数で与えられた整数以下の,全ての素数だけを格納
した配列を返す」より、関数 findPrimeNumbers(maxNum)
は、「2 以上 maxNum 以下の素数をすべてリストに入れて返す」関数である。
ちなみに、素数とは、「1と自分自身以外に約数がない数」のことである。
したがって、このプログラムは以下のように動く。
- 2 から maxNum まで順に数値 i を取り出す。
- i が素数かどうかをチェックする。
- 素数だったらリスト
pnList
に追加する。
for (i を 2 から [a] まで 1 ずつ増やす)
このループは、素数候補 i をループさせているので、i は 2 から「maxNum まで(含む)」が必要である。
よって、「a = maxNum」となる。
if ( [b] )
divideFlag ← false
この条件は、素数候補 i が j で割り切れたら素数ではないと判断している箇所である。
つまり、「素数でない」→「i が j で割り切れる」→「i ÷ j の余りが 0」
よって、「b = i ÷ j の余り が 0 と等しい」となる。
コメント