流れ図の繰返し処理で終了時の値をどう見極めるか
ITパスポート試験 令和4年度 問79 / アルゴリズムとプログラミング › アルゴリズムとプログラミング
過去問にチャレンジ
流れ図で示す処理を終了したとき,xの値はどれか。

- ア
0
- イ
14
- ウ
28
- エ
56
会話形式の解説
講師この流れ図では、計算を始める前に繰返しの終了条件を確認しましょう。xとyが等しくなったら終了します。
受験者最初はxが98、yが42です。xの方が大きいので、98から42を引いて56にしますか。
講師はい。最初の更新後は(x, y)=(56, 42)です。まだ等しくないので続けます。
受験者56は選択肢にありますが、ここではまだ終了時の値ではないのですね。
講師そのとおりです。もう一度xからyを引くと、(14, 42)になります。
受験者今度はyの方が大きいので、yからxを引いて(14, 28)です。
講師はい。28も選択肢にありますが、これは途中のyの値です。xとyはまだ等しくありません。
受験者さらにyからxを引くと(14, 14)になり、ここで繰返しが終わりますね。
講師はい。終了時のxは14なので、正解はイです。等しくなった後にもう一度引くことはないため、0にはなりません。
受験者56は途中のx、28は途中のy、0は余分に引いた場合の値ですね。終了条件まで値の組を追えば区別できます。
講師その確認方法が有効です。この処理は、大きい方から小さい方を繰り返し引いて最大公約数を求める方法でもあります。
まとめ
x=98、y=42から始め、大きい方から小さい方を引く操作を繰り返します。値の組は(98, 42)→(56, 42)→(14, 42)→(14, 28)→(14, 14)と変わります。x=yになった時点で終了するため、終了時のxは14で、正解はイです。56と28は途中の値であり、等しくなった後に引き続けて0にすることもありません。
解答・解説
正解はイです
この問題のテーマ
流れ図の繰返し処理を追い、終了時のxの値を求める問題です。
解き方の考え方
最初にx=98、y=42を代入します。xとyを比べ、大きい方から小さい方を引く操作を、x=yになるまで繰り返します。値の組を順に書くと、途中の値を終了時の値と取り違えずに済みます。
選択肢ごとの解説
- ×ア 00は終了時のxの値ではありません。x=yになった時点で繰返しが終わるので、そこからさらに引いて0にはしません。
- ○イ 14値の組は(98,42)→(56,42)→(14,42)→(14,28)→(14,14)と変わります。最後にx=y=14となり、終了時のxは14です。
- ×ウ 2828は途中でyが取る値です。そのときのxは14であり、まだxとyが等しくないので処理は続きます。
- ×エ 5656は最初に98-42を計算した直後のxの値です。xとyが等しくなるまで処理が続くため、終了時の値ではありません。
補足
この処理は、大きい方から小さい方を繰り返し引いて最大公約数を求める方法です。98と42では、最後に等しくなる値が14なので、計算結果とも一致します。
POINT
- 繰返しの終了条件を先に確認します。
- 各回のxとyを組にして記録すると、更新する変数を間違えにくくなります。
- x>yならxからyを引き、x≦yならyからxを引きます。
- x=yとなったときの共通の値が、この問題の答えです。
