システムアーキテクト 2010年 午前2 問11
問題文
次の流れ図において、
①+②+③+⑤→②→③→④→②→⑥
の順に実行させるために、①においてmとnに与えるべき初期値aとbの関係はどれか。ここで、a,bはともに正の整数とする。

選択肢
ア:a = 2
イ:2a = b
ウ:2a = 3b
エ:3a = 2b(正解)
🔒 解説は解答すると表示されます
ユークリッド互除法【午前2解説】
正解の理由
フローチャートは「大きい方から小さい方を引く」を繰り返すことで最大公約数を求める差によるユークリッド互除法です。問題が指定する実行順序
①→②→③→⑤→②→③→④→②→⑥
が成立するためには、最初に③で「m < n」と判定され⑤(n ← n − m)が実行され、その直後に改めて③で「m > n」と判定され④(m ← m − n)が実行される必要があります。従って初期値 m=a, n=b に対して次の連立不等式が成り立たねばなりません。
- 最初に m < n であること(⑤へ進むため)
- ⑤後の新しい n' = n − m に対して m > n' であること(次に④へ進むため)
2番目の不等式を整理すると すなわち です。これらをまとめると
となり、 を代入すると
を満たす必要があります。選択肢のうちこれを満たすのが エ()です。なぜなら は を意味し、 となって上の不等式を満たします。したがって初期値の関係として適切なのは エ です。
解法ステップ
- フローチャートの分岐から、指定の実行順序が示す「最初は⑤(n ← n − m)が先に来る」=初期で を導く。
- ⑤実行後に次の分岐で④(m ← m − n)が来るために、⑤後の に対して が必要。
- を整理して を得る。
- 1 と 3 を合わせて 。これを に置き換えると 。
- 選択肢を比べ、 を満たすものが正解。 は で条件を満たすため正解(エ)。
具体例(動作確認): ( を満たす)を代入すると
- ① m=2,n=3
- ② m≠n → ③ m<n → ⑤ n←3−2=1
- ② m≠n → ③ m>n → ④ m←2−1=1
- ② m=n → ⑥ 印字 → 終了
順序は問題の示す通りになります。
選択肢別の誤答解説
- ア: a = 2
- 単に と定めるだけでは に関する情報がなく、 を保証しないため実行順序を確定できない。設問が求める「a と b の関係」になっていない。
- イ:
- ここで 、すなわち なので初期は (⑤へ進む)。しかし⑤後は となり で等しくなる。したがってその後は④に進むのではなく、②で等号判定を経て即座に⑥(終了)に向かう。要求される順序(⑤の後に④が来る)は満たさない。
-(注意)誤って「この場合は最初に となる」とする記述がしばしば見られますが、正しくは です。
- ここで 、すなわち なので初期は (⑤へ進む)。しかし⑤後は となり で等しくなる。したがってその後は④に進むのではなく、②で等号判定を経て即座に⑥(終了)に向かう。要求される順序(⑤の後に④が来る)は満たさない。
- ウ:
- これは 、すなわち の初期状態を意味するため、初めから④(m ← m − n)が実行される。したがって指定の順序と合致しない。
- エ:
- より を満たし、上で導いた条件と一致する。したがって指定の実行順序を実現する。
よくある誤解
- 2a = b のときに m > n になると誤認する
- 実際は であり初期は 。等号が生じるのは⑤実行後である点を見落としやすい。
- フローチャートの矢印方向と比較符号の対応を取り違える
- 「<」が右へ行く、」「>」が下へ行く等、図の方向を正確に追うことが重要。
- 実行順序の記述とループ回数を混同する
- 「どの分岐を通るか」を先に決め、各分岐での変化後の不等式を順に検証すること。
補足コラム
このフローチャートは減算だけで最大公約数を求める古典的な方法で、引き算版のユークリッド互除法です。より高速な方法は剰余を使う方法( を用いる)ですが、教育上はこちらの差を繰り返す版で分岐と不等式の関係を理解するのが有益です。選択肢 エ に当てはまる整数例を一般化すると、 を満たす整数解は ( は正整数)なので、実行例では最終的に が出力されます(出力は最大公約数)。
FAQ
Q: なぜ「等しい」場合の扱いが重要なのか?
A: ②の判定で等しいと判定されれば即座に終了に行くため、等号になるタイミングによってその後の分岐(⑤→④の順など)が成立するかが変わります。問題で指定された順序では、⑤後に等号ではなく④が来る必要があるため等号になるケースは除外されます。
A: ②の判定で等しいと判定されれば即座に終了に行くため、等号になるタイミングによってその後の分岐(⑤→④の順など)が成立するかが変わります。問題で指定された順序では、⑤後に等号ではなく④が来る必要があるため等号になるケースは除外されます。
Q: 条件 は厳密に成り立つ必要がありますか?
A: はい。等号を含むと(例えば )⑤後に等しくなってすぐ終了してしまい、問題の順序に合いません。したがって不等号は厳密不等号です。
A: はい。等号を含むと(例えば )⑤後に等しくなってすぐ終了してしまい、問題の順序に合いません。したがって不等号は厳密不等号です。
関連キーワード: ユークリッド互除法、最大公約数、差によるアルゴリズム、フローチャート解析、不等式検討

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

