分類テクノロジ系 » アルゴリズムとプログラミング » アルゴリズムとプログラミング新しい試験範囲外(2027年度からの新しい試験には出ない分野)年度令和8年度の100問の一覧
関数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 が「以下」だと、num が2のとき最初の if で false になり、問題文の例と合いません。b の「と等しい」も、num が div と等しいときしか割らないので、9 のような数を1回も割らずに true にしてしまいます。
イ× b は合っていますが、a が「以下」だと num が2のとき最初の if で false になり、2を素数と判定できません。
ウ× a は合っていますが、b が「と等しい」だと、num が2のときは div も2で繰返しに入り、2÷2の余り0で false になります。num が9のときは div と等しくないので1回も割らずに true になります。
エ○ 正解 num が1のときだけ最初の if で false にし、div が num に届くまで割り続けます。2は繰返しに入らず true、9は div が3のとき割り切れて false、7は最後まで割り切れず true になります。
解説
素数は、1とその数自身のほかに約数をもたない2以上の整数です。1は素数ではありません。プログラムは2段に分かれています。最初の if で素数になりえない小さな数を false にし、else の側で div を2から1ずつ増やしながら num を割っていき、割り切れたら false、割り切れないまま繰返しを抜けたら true を返します。
空欄は、問題文が示す「isPrime(2) は true」で決まります。num が2のときに繰返しに入ると、2÷2の余りが0で false になってしまうので、2では繰返しに入ってはいけません。a は2を false にせず1だけを false にする「より小さい」、b は div が num に届いたら抜ける「より大きい」です。
a:1は素数でないので false にし、2は通す 「以下」→ num=2 も false(例と合わない) 「より小さい」→ num=1 だけ false b:num=2 のとき div=2 「と等しい」→ 2=2 で繰返しに入る → 2÷2の余り0 → false(例と合わない) 「より大きい」→ 2>2 でない → 繰返しに入らず true 検算:num=9 div=2:9÷2の余り1 → div=3 div=3:9÷3の余り0 → false 検算:num=7 div=2〜6 の余り:1,1,3,2,1(どれも0でない) div=7:7>7 でない → 繰返しを抜けて true
教科書 g37この問題の知識
アルゴリズムは問題を解くための手順で、順次・選択・繰返しの3つで組み立てます。流れ図と擬似言語の読み方、変数の値を書き出すトレース、空欄の埋め方、線形探索と2分探索、選択ソート・バブルソート・クイックソートと併合までを、公開問題を解ける形でまとめます。
Udemy の ITパスポート講座を、受講者数・★評価・口コミで比べたページです(広告を含みます)。
過去問教科書の一覧(現行の試験の順)教科書の一覧(新しい試験の順)
出典:IPA「ITパスポート試験 公開問題」令和8年度 問85。問題文と選択肢は改変せずに引用しています(表・図は文字に書き起こしたもの)。正解は IPA 公表の解答例によります。

