ITパスポート 過去問
令和8年度
問85 (テクノロジ系 問31)
問題文
[プログラム]
○論理型: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
付箋
付箋は自分だけが見れます(非公開です)。
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
ITパスポート試験 令和8年度 問85(テクノロジ系 問31) (訂正依頼・報告はこちら)
[プログラム]
○論理型: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:より大きい
- a:より小さい b:と等しい
- a:より小さい b:より大きい
正解!素晴らしいです
残念...
画像拡大
この過去問の解説 (1件)
01
素数は2以上で、1と自分自身以外に正の約数をもたない整数です。このプログラムでは、2未満を先に除外し、2からnum−1までの整数で割り切れるかを調べる必要があります。
aを「以下」にするとnum=2までfalseになり、設問のisPrime(2)がtrueという条件に反します。また、bが「と等しい」では2以外の除数を順に試せません。
bを「より大きい」として除数を順に試す点は合っていますが、aを「以下」にすると素数2を誤ってfalseにします。
aを「より小さい」とすれば2を残せますが、bが「と等しい」では、numとdivが等しい場合だけを調べることになり、合成数を正しく判定できません。
正しいです。numが2より小さければfalseとし、それ以外ではnumがdivより大きい間、2から順に割り切れるかを確認します。約数が見つからなければtrueを返します。
2未満を除外し、divがnumに達するまで候補の除数を順に試す必要があります。
参考になった数1
この解説の修正を提案する
前の問題(問84)へ
令和8年度 問題一覧
次の問題(問86)へ