平成31年度 春期 ITパスポート試験 問71 解説 数値処理の計算
図1のように二つの正の整数 A1, A2を入力すると,二つの数値 B1, B2を出力する ボックスがある。B1はA2と同じ値であり,B2はA1をA2で割った余りである。図2の ように,このボックスを2個つないだ構成において,左側のボックスのA1として49, A2として11を入力したとき,右側のボックスから出力されるB2の値は幾らか。
- ア 1 ✓ 正答
- イ 2
- ウ 4
- エ 5
解説
この問題は、入力値をルールに従って変換し、それを次の工程へ順番に渡す「トレース(追跡)」の作業を行うことで正解を導き出せます。
ルールを確認すると、あるボックスに と を入力したとき、出力は 、そして を で割った余りとなります。
今回の構成では、左側のボックスから出力された と が、そのまま右側のボックスの と に入力されます。
- 左側のボックスに を入力します。
- は と同じなので です。
- は の余りなので、 より、 です。
- 右側のボックスに を入力します(左側の出力がそのまま入力されます)。
- は と同じなので です。
- は の余りなので、 より、 です。
したがって、右側のボックスから出力される は となります。
この問題の背景にあるのは、ユークリッドの互除法という数学的なアルゴリズムです。ユークリッドの互除法は、二つの自然数の最大公約数を効率的に求める手法であり、今回のボックスの処理のように「割った余りを次の入力として繰り返す」という手順を最大公約数が求まるまで行います。
ITの現場では、このような処理の繰り返しを「アルゴリズム」や「処理フロー」として整理することが多々あります。プログラムを作成する際、複雑な数式をそのまま計算するのではなく、今回のように小さな処理(関数やモジュール)を組み合わせて目的の結果を出す設計が基本となります。特にプログラミングの基礎問題として、ループ処理や変数の値の更新を確認する出題形式はよく見られます。もし試験本番で同様の問題が出た場合は、焦らずに一つずつ値を代入して、図やメモ書きを残しながら進めるのが最も確実です。
- ITパスポート アルゴリズムとは(ITパスポート試験ドットコム)