問題
次の擬似言語プログラムを実行したとき、変数flagの値はどれか。 整数型: n ← 7 論理型: flag ← true 整数型: i ← 2 while (i ≦ n - 1) if (n mod i = 0) flag ← false endif i ← i + 1 endwhile
選択肢
- 1ア true
- 2イ false
- 3ウ 7
- 4エ 0
正解
1. ア true
詳しい解説を見る解説を閉じる
解説
このプログラムは、nが2からn−1までのいずれかの数で割り切れたらflagをfalseにする素数判定である。n=7の場合、iは2〜6まで動き、7 mod 2=1、7 mod 3=1、7 mod 4=3、7 mod 5=2、7 mod 6=1とすべて0にならないため、flagがfalseに書き換えられることはなく、初期値のtrueのまま終了する。7は素数であり、アが正解である。イのfalseはいずれかで割り切れると誤読した場合の誤りで、ウの7やエの0はそもそも論理型変数flagの値として型が不適切である。頻出ポイント:割り切れるか調べる範囲は本問のようにn−1までの素朴な実装のほか、平方根まで調べれば十分という効率化も知られている。フラグ変数の初期値と更新条件の読み取りは科目Bの定番である。
一問一答
科目A 180問+科目B 60問