bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

ユークリッドの互除法

通分のために最大公約数を求める。

#include <iostream>
using namespace std;

template<class T> T gcd( T m, T n )
{
	if( m < n )
		swap( m, n );

	if( 0 == n )
		return m;

	if( 0 == n % m )
		return n;

	m = m % n;
	swap( m, n );

	return gcd<T>( m, n );
}

int main()
{
	int input_m, input_n;

	cout << "ユークリッドの互除法により最大公約数を計算します。" << endl
		<< "m を入力してください >";
	cin >> input_m;
	cout << "n を入力して下さい >";
	cin >> input_n;

	cout << input_m << " と " << input_n << " の最大公約数は " << gcd( input_m, input_n )
		<< " です。" << endl;

	return 0;
}