令和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:より大きい
ポイント
素数かどうかを調べる関数のプログラムの、条件の字句の組合せを選ぶ問題です。
考え方と解き方
「以下」「より小さい」「より大きい」の向きを、すぐ取りちがえます。2 という最小の素数の場合を試すと、a が決まります。
- a は、素数でない数を弾く条件です。1 以下の数は素数ではありませんが、2 は素数なので、2 を弾いてはいけません。したがって、「2 より小さい」が入ります。「2 以下」だと、素数の 2 が false になってしまいます。
- b は、割る数 div を 2 から 1 ずつ増やして、num の手前まで試す繰返しの条件です。num が div より大きい間、繰り返します。num = 9 なら、div = 3 で割り切れて false になります。num = 2 なら、繰り返さずに true になります。
- したがって、適切な組合せは エ です。
- 参考:擬似言語を使ったアルゴリズムとプログラミングは、新しい制度では大分類5 システムの開発・運用(中分類22 アルゴリズム・プログラミング)に入り、ITパスポートの範囲外です。
ほかの選択肢
- ア a:以下、b:と等しい としていますが、どちらも不適切です。2 が false になり、繰返しも動きません。
- イ a:以下、b:より大きい としていますが、a が「以下」だと、素数の 2 が false になります。
- ウ a:より小さい、b:と等しい としていますが、b が「と等しい」だと、num が 2 のときだけ繰返しに入って false になり、3 以上の数は繰り返さずに全て true になります。
覚えておくこと
- 素数の判定:2 より小さい数は素数でない。2 から順に割って、割り切れる数があれば素数でない。
出典:令和8年度 ITパスポート試験 公開問題 問85