この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

ユークリッドの互除法(引き算版)のトレース問題です。流れ図は L=A=876、S=B=204 から始まり、L と S を比較して、L>S なら L←L−S、L<S なら S←S−L を繰り返し、L=S になったら終了します。比較(L:S)の回数を数えながらトレースします。①876:204→L=672、②672:204→L=468、③468:204→L=264、④264:204→L=60、⑤60:204→S=144、⑥60:144→S=84、⑦60:84→S=24、⑧60:24→L=36、⑨36:24→L=12、⑩12:24→S=12、⑪12:12→等しいので終了。比較は全部で11回行われ、エが正解です(このとき最大公約数12が求まっています)。引き算を繰り返す方式は、割り算の余りを使う互除法(876 mod 204 など)と数学的に等価ですが、比較回数を問われたら愚直に1回ずつ数えるのが最も確実です。数え漏れしやすいのは、値を更新しない最後の「L=S と判定する比較」も1回に含める点です。

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

選択肢 ア
4回は、L←L−S が連続する最初のフェーズ(876→672→468→264→60)の引き算回数だけを数えた値です。その後 S 側の引き算フェーズや L=S を確認する最終比較が続くため、全体の比較回数はこれより大幅に多くなります。途中で「もう答えが見えた」と早合点せず、終了条件が成立するまでトレースを完走させることが大切です。
選択肢 イ
9回は、トレースの途中で比較を2回数え漏らした場合に出やすい値です。典型的には、L と S の大小が入れ替わる境目(⑤の 60:204)や、等しくなって終了する最後の比較(⑪の 12:12)を数え忘れるケースです。比較1回につき表に1行書く形式でトレースすれば、行数=比較回数となり数え漏れを防げます。
選択肢 ウ
10回は、最後の「L=S(12:12)」と判定して終了する比較を数えに入れなかった場合の値です。流れ図では、値の更新が起こらない場合でも判断記号(ひし形)を通過すれば比較1回としてカウントします。「終了を確定させる比較も1回」という点は、ループ回数を問う問題全般での頻出の引っかけポイントなので注意しましょう。

解くときのポイント

回数を問う問題は表を作って1行1比較で完走させる。値が更新されない「終了判定の比較」もカウントに含めるのが鉄則。