boost::math::common_factor

トップページ > 数学 >

abstract

必要なヘッダ
<boost/math/common_factor.hpp>
出来ること
最大公約数、最小公倍数
リファレンス
en / jp

sample

サンプルの動作確認バージョン [GCC4.4/1.40.0] [VC9/1.40.0]

#include <iostream>
#include <algorithm>
#include <boost/math/common_factor.hpp>
using namespace std;

int main()
{
	cout << "6 と 15 の最大公約数は "
	     << boost::math::gcd(6, 15) << " で、最小公倍数は "
	     << boost::math::lcm(6, 15) << " です。"
	     << endl;

	// 関数オブジェクトとして使う。
	int a[] = {4, 5, 6}, b[] = {7, 8, 9}, c[3];
	transform( a, a+3, b, c, boost::math::gcd_evaluator<int>() );

	for( int i=0; i<3; ++i )
		cout << "gcd(" << a[i] << "," << b[i] << ") = "
		     << c[i] << endl;

	return 0;
}

出力例

6 と 15 の最大公約数は 3 で、最小公倍数は 30 です。
gcd(4,7) = 1
gcd(5,8) = 1
gcd(6,9) = 3

etc

最大公約数です。最小公倍数です。ユークリッドの互除法です。 int などだけでなく、% で剰余計算ができて、 ゼロと比較できる型ならユーザー定義型に対しても使えます。 整数定数が相手ならば、コンパイル時に計算する版 boost::math::static_gcd<8, 15>::value なんてのもある模様。

presented by k.inaba (kiki .a.t. kmonos.net) under CC0