課題 1

2つの正の整数を入力し,最大公約数・最小公倍数を出力するプログラムを作成せよ.
以下の仕様を満足していること.

考察課題(必須)

標準入力からの値の読み込み部分を,scanf関数を用いたものに変更し,変更前と変更後の仕様以外の入力による挙動の違いを調べよ。


考察課題(オプション)

下記から1つ選んでその内容について考察せよ(2つ選択してもよい).

  1. 作成したプログラムの入力の数値の上限を調べよ(1.1参照)
  2. 再入力させる部分のプログラム構造のバリエーションについて考えよ

この他にも,課題作成に当たって創意工夫した点や,自分のプログラムの問題点,改良の余地について何かあれば考察に記入すること.

【ヒント】

ユークリッドの互除法

ユークリッドの互除法は2つの正の整数m, n の最大公約数を計算するための方法です.アルゴリズムは下記のとおりです

  1. m を n で割り余りを r とする
  2. r = 0 ならば 4へ.r が 0 でない場合は 3 へ.
  3. 新 m = (これまでの) n.
    新 n = (いまの余り) r.
    とし,1 へ.
  4. n の値が最大公約数となる.

例として60と32の最大公約数を求めてみる.

60 ÷ 32 = 1 余り 28

32 ÷ 28 = 1 余り 4

28 ÷ 4 = 7 余り 0

最後の割った数は 4 であるから,4 が最大公約数となる.