欧几里德普通&二进制模板

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YewSpadeJ/article/details/82427854
int gcd(int a,int b)
{
    return b==0?a:gcd(b,a%b);
}
inline int GCD(int x,int y)
{
	int i,j;
	for(i = 0;0 == (x & 1);++i)x >>= 1;
	for(j = 0;0 == (y & 1);++j)y >>= 1;
	if(j < i) i = j;
	while(1){
		if(x < y) x ^= y;y ^= x;x ^= y;
		if(0 == (x == y))return y <<i;
		while(0 == (x&1)) x >>= 1;}
}

猜你喜欢

转载自blog.csdn.net/YewSpadeJ/article/details/82427854