C言語

【C言語】「最大公約数」の計算


プログラミング初心者向けの練習問題として「最大公約数の計算を行うプログラムを作成する」というものがあります。

今回はそのプログラムの作成方法について解説します。

実際にプログラムを作成してみる

早速ですが、実際にプログラムを作成していきます。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1.  正の整数aとbの値をそれぞれ入力させる(a > b)
  2.  r = a % bを計算する
  3.  bの値をaに、rの値をbに代入する
  4.  2、3をrの値が0になるまで繰り返す
  5.  4終了時のbの値が最大公約数となる

この計算にはユークリッドの互除法を利用しています。

実装例

上記の手順に従ってプログラムを作成します。

#include <stdio.h>

int main(void) {

  /* 変数を定義する */
  int a, b, buff, r;

  printf("Enter the 1st number : \n");
  scanf("%d", &a);
  printf("Enter the 2nd number : \n");
  scanf("%d", &b);

  /* 両変数の値を入れ替える(変数aの値が変数bの値よりも小さい場合) */
  if(a<b){
    buff = a;
    a = b;
    b = buff;
  }

  /* ユークリッドの互除法 */
  r = a % b;
  while(r!=0){
    a = b;
    b = r;
    r = a % b;
  }

  /* 計算結果を出力する */
  printf("Result : %d\n", b);

  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

Enter the 1st number : 
55
Enter the 2nd number : 
15
Result : 5

計算結果から適切に最大公約数の計算ができていることがわかります。