| 12345678910111213141516171819202122232425262728293031323334353637 |
- #ifndef BOOST_MATH_COMMON_FACTOR_RT_HPP
- #define BOOST_MATH_COMMON_FACTOR_RT_HPP
- namespace boost {
- namespace math {
- // TODO: use binary GCD for unsigned integers ....
- template < typename IntegerType >
- IntegerType gcd( IntegerType a, IntegerType b )
- {
- const IntegerType zero = (IntegerType)0;
- while ( true )
- {
- if ( a == zero )
- return b;
- b %= a;
- if ( b == zero )
- return a;
- a %= b;
- }
- }
- template < typename IntegerType >
- IntegerType lcm( IntegerType a, IntegerType b )
- {
- const IntegerType t = gcd (a,b);
- if (!t)return t;
- return a / t * b;
- }
- }}
- #endif
|