C言語

【C言語】「最小公倍数」の計算


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

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

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

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

プログラム作成の手順

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

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

この計算にはユークリッドの互除法を利用しています。本来、ユークリッドの互除法は最大公約数を求める計算法ですが、これを利用して最小公倍数を求めることも可能です。

実装例

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

#include <stdio.h>

int main(void) {

  /* 変数を定義する */
  int a, b, buff, p, 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;
  }

  /* 入力した2変数の積を求める */
  p = a * b;

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

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

  return 0;
}

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

Enter the 1st number : 
24
Enter the 2nd number : 
16
Result : 48

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