递归实现:
int gcd(int a,int b)
{
return b == 0 ? a : gcd(b,a%b);
}
位运算优化( O(log2n) ):
bool iseven(ll x)
{
return !(x&1);
}
ll gcd(ll x,ll y)
{
if(x < y)
return gcd(y,x);
if(y == 0)
return x;
else
{
if(iseven(x))
{
if(iseven(y))
return gcd(x >> 1, y >> 1) << 1;
else
return gcd(x >> 1, y);
}
else
{
if(iseven(y))
return gcd(x, y >> 1);
else
return gcd(y, x - y);
}
}
}