問 8(提出プログラム名:ex0408.c)
2 つの整数 a, b を読み込み,以下の手順に従って a と b の最大公約数を求めるプログラムを作成しなさい.ただし,プログラムでは必ず while 文を使うこと(do – while 文ではない).if 文を使ってはいけません.
なお,a, b はいずれも 1 以上の整数であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0408.c としなさい.
【手順】最大公約数を求める手順(アルゴリズム)
① a % b != 0 である限り以下の②,③,④を繰り返す(while で書く):
② r = a % b; (ただし,r は int 型の変数です)
③ a = b;
④ b = r;
⑤ b を出力する(← これは while が終わった後)
上の手順で最後に出力される変数 b の値が求める最大公約数になっている.
※while の繰り返しの中で「②,③,④」の 3 つは必ずこの順番で実行すること.
【参考】
問題文で示した手順(アルゴリズム)はユークリッドのアルゴリズムとして知られている有名なものです.なぜこの手順で最大公約数が求まるのか興味のある人はこの資料を御覧ください(阿萬が2019年Q1の基礎情報科学の講義で使用した資料).
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
「です」の後に改行(\n)を入れ忘れていないか注意せよ
2 つの整数を入力してください:50 25 最大公約数は 25 です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:65 26 最大公約数は 13 です⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:13 11 最大公約数は 1 です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
例えば,誤って b ではなく a や r を最大公約数として出力している.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 7 (ex0407.c) ]
ミスが無いことを確認したら次の問題へ → [ 問 9 (ex0409.c) ]