最大公约数函数(外带最小公倍数)GCD
第一种(最快)
int gcd(int a, int b){ return a == 0 ? b : gcd(b % a, a); }
第二种
int gcd(int x, int y)
{
if(y == 0) return x;
if(x < y) return gcd(y,x);
else return gcd(y, x%y);
}
第三种
int gcd(int x,int y )
{
if(x < y) return gcd(y,x);
if( y == 0) return x;
else
{
if( !(x%2) )
{
if( !(y%2) )
return 2*gcd(x >> 1, y >> 1);
else
return gcd(x >> 1, y );
}
else
{
if( !(y%2) ) // x is odd, y is even
return gcd(x, y >> 1);
else // x, y both odd
return gcd(y,x-y);
}
}
}
利用上面几种方法可以求出两个数的最大公约数,而知道了最大公约数,最小公倍数就可以直接算出。
最小公倍数=x*y/最大公约数。