基本情報技術者試験の公開問題を解こう!(令和5年度・科目B)(1)「素数だけを格納した配列を返す関数」

スポンサーリンク
IT系

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

正解:ア

この問題は、素数を求めるプログラムの空欄 a と b に正しい選択肢を入れるものである。

問題文「関数findPrimeNumbers は,引数で与えられた整数以下の,全ての素数だけを格納
した配列を返す」より、関数 findPrimeNumbers(maxNum) は、「2 以上 maxNum 以下の素数をすべてリストに入れて返す」関数である。
ちなみに、素数とは、「1と自分自身以外に約数がない数」のことである。

したがって、このプログラムは以下のように動く。

  1. 2 から maxNum まで順に数値 i を取り出す。
  2. i が素数かどうかをチェックする。
  3. 素数だったらリスト 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 と等しい」となる。

コメント

タイトルとURLをコピーしました