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