アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20150726 実施分 問7
次の流れ図は,2 数 A,B の最大公約数を求めるユークリッドの互除法を,引き算の繰返しによって計算するものである。A が 876,B が 204 のとき,何回の比較で処理は終了するか。
流れ図: 開始 → [A→L, B→S] → 判断 L:S。L>S のとき [L-S→L] を実行して判断に戻る。L<S のとき [S-L→S] を実行して判断に戻る。L=S のとき [A,B,L の出力] → 終了。
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20150726 実施分 問7(問題文は IPA の公開問題。解説は当サイト作成)
答えと解説を見る
正解:エ
覚える知識
ユークリッドの互除法のトレースと初期値関係
ユークリッドの互除法の引き算版は、大きい方から小さい方を引く操作を両者が等しくなるまで繰り返し、等しくなった値が最大公約数となる。
この問題で必要なこと
L=876,S=204から差を引く操作を繰り返し、LとSが等しくなる(最大公約数)まで毎回の比較回数を数える。
ひっかけ
除算による互除法の回数や、最後の一致判定の1回分を数え忘れて誤らせる。
この知識の出題:本試験系 6 回・免除試験 19 回(公開問題での観測値)