2012
10/15
プログラム課題4
課題
キーボードからintの整数を入力する.入力された整数と,整数9966990との最大公約数を表示するプログラムを作成せよ.ただし整数9966990よりも大きい数が入力された場合はerrorと表示すること.マイナスの数を入力された場合は正の数として計算すること.また,次の関数プロトタイプにしたがう自作の関数gcdを使うようにプログラムすること
int gcd(int m, int x); //m>xとしてmとxの最大公約数を求めて返す関数
このgcdを使うとmain関数は次のようにできる.
int main(void) { int m,n,g; m=9966990; scanf("%d", &n); g = gcd( m, n); printf("%d\n",g); }
関数gcdの本体定義部分を自分で追加して全体としてプログラムを完成させること.
実行例
実行開始 60 ←キーボードから60と入力 30 ←9966990との最大公約数30を表示
ヒント
最大公約数を求める有名なアルゴリズムとして,ユークリッドの互除法がある.二つの整数a,b(a>bとする)の最大公約数dを求める.
- Step 1. もしb=0であればd=|a|として終了
- Step 2. aをbで割った余りをrとする
- Step 3. a=b, b=rとして、Step 1.へ
提出方法
- 課題提出ページにログインし直接解答を記入すること
- 提出には,電子メール(xgate)のIDとパスワードが必要である.
- 課題提出ページは,学内からしかアクセスできない.自宅からは不可能.
- あらかじめ,自分のプログラムは別ファイルとして保存しておき,バックアップしておくこと.
- 正解でないプログラムは提出できないようになっている.
締め切り
- 原則として次回講義の前まで
- ただし,来年一月までは再提出や遅刻提出を受け付けるのであきらめないこと.
- 最初から完璧を目指さないでよい.様子見ぐらいの気持ちで,とりあえず一回提出してみること