過去問解きまくり研究所 ホーム

平成31年度 春期 午前 問7

アルゴリズム

ユークリッドの互除法に関する問題

次の流れ図は,2数 A,B の最大公約数を求めるユークリッドの互除法を,引き算の繰返しによって計算するものである。A が876,B が204のとき,何回の比較で処理は終了するか。

流れ図:

開始
 ↓
L←A / S←B
 ↓
(合流点)←──────────────┐←─────────────┐
 ↓                        │                │
判定 L:S                  │                │
 ├─ > のとき → L←(L−S) ─┘                │
 ├─ < のとき → S←(S−L) ───────────────────┘
 └─ = のとき ↓
A, B, L の出力
 ↓
終了
答えと解説を見る

✓ これが正解エ11

解説

引き算を繰り返して、十一回目の比較で二つが等しくなります。

ユークリッドの互除法は、大きいほうから小さいほうを引くことを繰り返します。二つが等しくなった時点で、その値が最大公約数です。この流れ図では、比べるたびに一回と数えます。始まりは八百七十六と二百四です。大きいほうから引く操作を四回続けると、六十と二百四になります。ここで大小が入れ替わり、今度はもう一方から引く番です。三回引くと六十と二十四になり、また入れ替わります。さらに二回引いて十二と二十四になります。もう一回引くと十二と十二で並びます。ここまでの比較を数えると十回で、等しいと確かめる比較が十一回目です。引き算の回数と比較の回数がずれる点に注意します。最後の一回は引き算を伴わないからです。引いた回数は十回で、比較はそれより一つ多くなります。割り算で行えば回数はぐっと減ります。

ほかの選択肢はなぜ違うのか

出典:平成31年度 春期 基本情報技術者試験 午前 問7

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)