it-kakomon › ITパスポート › 令和8年度 › 問85

令和8年度 ITパスポート 問85(テクノロジ)

出典:令和8年度 ITパスポート試験 公開問題 問85(独立行政法人情報処理推進機構(IPA))

関数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
選択肢ab
ア以下と等しい
イ以下より大きい
ウより小さいと等しい
エより小さいより大きい
正解と解説を見る

正解:エ

【素数の判定の考え方】

素数は、1とその数自身でしか割り切れない、2以上の整数です(1は素数ではありません)。ある数numが素数かどうかは、2からnum - 1までの数で順に割ってみて、一度も割り切れなければ素数だと判定できます。

【aに入る字句】

numが2より小さい(つまり1)なら、素数ではないのでfalseを返します。aが「以下」だと、num = 2のときもfalseになってしまいますが、問題文のとおりisPrime(2)はtrueでなければなりません。したがって、aは「より小さい」です。

【bに入る字句】

whileの繰返しでは、divを2から1ずつ増やしながら、numがdivで割り切れるかを調べます。調べるのはdivがnum - 1になるまでなので、「numがdivより大きい」間だけ繰り返します。

・num = 2:最初から2はdiv(2)より大きくないので、繰り返さずにtrueを返す(2は素数)

・num = 4:4はdiv(2)より大きいので割ってみると、余りが0なのでfalseを返す

・num = 5:div = 2、3、4で割っても余りが0にならず、div = 5になったところで繰返しが終わってtrueを返す

bが「と等しい」だと、num = 4のときdiv(2)と等しくないので、一度も割らずにtrueを返してしまいます。

aはより小さい、bはより大きいの組合せです。よって、正解は選択肢エです。

この回の100問を通しで解く(無料)