平成21年度 春期 ITパスポート試験 問72 解説 処理ボックスの計算
問72 図1のように二つの正の数値A1, A2を読み取り, 二つの数値B1, B2を出力する ボックスがある。B1にはA2と同じ数値を出力し, B2にはA1をA2で割った余りを 出力する。図2のようにこのボックスを2個つないだ場合, A1=15, A2=6のとき後 方のボックスのB1に出力される数値は幾らか。
- ア 0
- イ 3 ✓ 正答
- ウ 6
- エ 15
解説
この問題は、入力値がボックスを通るたびにルールに従って変換されるという一連の流れを、順を追って計算することで解くことができます。
1つ目のボックス: を入力します。
2つ目のボックス:1つ目の出力 がそのまま入力されます。つまり、 を入力します。
したがって、後方のボックスの は となります。
ボックスが示すアルゴリズムの正体
この問題のボックスは、実は数学で習う「ユークリッドの互除法」の1ステップを表現しています。ユークリッドの互除法とは、2つの整数の最大公約数を求めるための効率的な手法です。
問題のルールを整理するとこうなります。
- には入力された2番目の値()をそのまま渡す
- には を で割った余りを渡す
この操作を繰り返すと、最後には余りが になります。余りが になったときの の値が、元の2つの数値(この場合は15と6)の最大公約数となります。今回のケースでは、2つ目のボックスで (余り)が になったため、その時の である が最大公約数であることがわかります。
順を追った処理の考え方
試験会場では、図に直接数値を書き込みながら進めるのが最も確実です。
- 最初のボックスの左端に と を書く。
- ボックス内の指示通りに計算する。 はそのまま を右へ、下側の出口 には を で割った余りである を出す。
- 2つ目のボックスの左端に、前のボックスから受け取った と を書き込む。
- 再び同様の計算を行う。 は となり、下の は となる。
- 問題が求めているのは「後方のボックスの 」なので、その値である を選択肢から選ぶ。
このように、複雑そうな仕組みであっても、1つずつ「入力」と「出力」の関係を丁寧にトレース(追跡)していくのが、アルゴリズム関連の問題を解くコツです。
なぜこの知識が重要なのか
コンピュータプログラムにおいて、複雑な処理は小さな処理の組み合わせでできています。この問題のように、ある処理の結果が次の処理への入力となる「パイプライン」的な考え方は、データ処理や自動化の基本です。
また、ユークリッドの互除法のようなアルゴリズムは、単なる数学の知識ではなく、コンピュータが非常に少ない手順で答えを導き出すための「効率的な設計」の例です。ITパスポートでは、直接プログラミングをすることはありませんが、こうした「手順を組み立てて答えを出す」という論理的思考は、システム設計や業務フローを理解する上で非常に重要な基礎能力となります。