基本情報技術者 2023年 科目A 問11
問題文
次の流れ図において、
① → ② → ③ → ⑤ → ② → ③ → ④ → ② → ⑥
の順に実行させるために、①においてmとnに与えるべき初期値aとbの関係はどれか。ここで、a, bはともに正の整数とする。

選択肢
ア:a = 2b
イ:2a = b
ウ:2a = 3b
エ:3a = 2b(正解)
🔒 解説は解答すると表示されます
3回の差の更新で一致させる関係【午前解説】
正解の理由
流れ図は減算による最大公約数(差を引くユークリッドの互除法)と同様の制御で、初期値 a, b に対して最初は m<a, n=b として m<n の経路を取り、次に n を として更新し、さらに m を として更新した後に m と n が等しくなるという特定の順序を要求しています。
この順序を満たすための代数条件を整理すると、最終的に となり、整理すると になります。したがって正しい選択肢は エ です。
この順序を満たすための代数条件を整理すると、最終的に となり、整理すると になります。したがって正しい選択肢は エ です。
解法ステップ
- 初期は m=a, n=b。最初の比較で m≠n かつ m<n である必要がある。よって 。
- m<n のとき実行されるのは n ← n − m なので、更新後は (ここで )。
- 再び比較して今度は m>n になり、m ← m − n が実行されるため (これで )。
- その後 m と n が等しくなる必要があるため を解くと 。
- 条件 と を同時に満たす正の整数解は の形になる。最小例は 。
選択肢別の誤答解説
- ア:
これは となるため初回比較で m>n の経路を通り、図が要求する m<n → n←n−m の順序になりません。よって不適。 - イ:
この場合 で初回は確かに 。しかし n←n−m を一回行うと になり、直後に m=n になって出力に行ってしまい、図で要求される「先に n を減らし、その後 m を減らす」一連の2段更新の順序になりません。 - ウ:
これは で となり、初回比較で m>n の経路(mを先に減らす)になってしまい、問題の通る順序と合いません。 - エ:
上の解法ステップで導かれる条件と一致します。例えば を代入すると (2,3) → n←1 → m←1 → (1,1) と順に進み、図の示すノード順になることが確認できます。
よくある誤解
- 「最初の比較で m:n と書かれた菱形は同じ判定しかしていない」と誤解して、どのノードが等号・不等号のどれを担当するかを混同する。図中は最初の菱形が等=か否か、右側の菱形が大小の分岐を決める点に注意すること。
- 更新後の戻り先が別の比較ノード(③)だと思い込み、どの時点で等号判定が行われるかを誤ると順序条件を取り違える。ループは更新後に最初の判定(②)へ戻る点を踏まえる。
- 符号や不等式を扱う際、更新後の値が正であることを確認しないまま式を立ててしまい、途中で負やゼロが出る可能性を見落とす(本問は正の整数であることが前提)。
補足コラム
このフローチャートは減算を繰り返すユークリッド互除法の一種です。差を引いていく方法は除算による方法に比べてステップ数が増えることがありますが、図問題では「特定の更新順が必要になる初期比」を問う典型問題です。等式 から求まる一般解は で、最小の自然数解は です。
FAQ
Q. もし a と b が互いに素ならどうなる?
A. 互いに素かどうかはこの問題の経路には直接関係しません。重要なのは各ステップでの大小関係と、更新後に等しくなるかどうかです。互いに素でも上の条件 を満たせば図の順序は達成されます。
A. 互いに素かどうかはこの問題の経路には直接関係しません。重要なのは各ステップでの大小関係と、更新後に等しくなるかどうかです。互いに素でも上の条件 を満たせば図の順序は達成されます。
Q. 途中でゼロになってもアルゴリズムは続けられますか?
A. 問題では a, b は正の整数とされるため途中の更新も正である必要があります。本問の導出では と を確認しています。
A. 問題では a, b は正の整数とされるため途中の更新も正である必要があります。本問の導出では と を確認しています。
関連キーワード: 最大公約数、ユークリッドの互除法、差の繰り返し、フローチャート解析、不等式変形、初期条件設計

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

