のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

最小公倍数と最大公約数

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

さて、今日は数学でも割りと使われる最小公倍数と最大公約数
のプログラムを組んでみました。

プログラムについて

説明

最小公倍数の求め方は2つのナンバーの最大公約数を求めて割ることだけです。
加えて、2つのナンバーを掛ければ解けます。

さて、最大公約数の解き方ですが、ユーグリッドの互除法と呼ばれるアルゴリズムを使います。

①大きい方から小さい方を引く
②引いた方から前の小さい方を引く
③数が等しくなるまで繰り返す。

訳がわからないので、実際に試してみます。
例えば12と8ならば・・・

1回目:12 - 8 = 4
2回目:8 - 4 = 4
4,4となったのでここで終了です。最大公約数は4です。

さて、実際のソースコードは以下の通りです。

ソースコード

#include <iostream>

using namespace std;

int ggd(int number1,int number2){
	int m = number1;
	int n = number2;

	if(number2 > number1){
		m = number2;
		n = number1;
	}

	while(m != n){
		int temp = n;
		n = m - n;
		m = temp;
	}

	return m;
}

int lcm(int number1,int number2){
	return number1 * number2 / ggd(number1,number2);	
}

int main(void){
	cout << ggd(12,8) << endl;
	cout << lcm(12,8) << endl;
}

結果

4
24