/*
二进制求最大公约数。
由于传统的GCD,使用了%,在计算机运行过程中
要花费大量的时间,所以,采取二进制的求法,来减少时间的消耗。
算法:
当a,b都是偶数时: gcd(a,b)=2*gcd(a/2,b/2);
当a,b一奇一偶时: if(a&1) gcd(a,b)=gcd(a,b/2);
else gcd(a,b)=gcd(a/2,b);
当a,b都是奇数时: if(a>b)
gcd(a,b)=gcd( (a-b)/2, b);
else
gcd(a,b)=gcd( a,(b-a)/2);
其实就是把偶数的/2,而且奇数-奇数=偶数。
*/
#include<stdio.h> int Binary_GCD(int a,int b)
{
int c=;
while(a-b)
{
if(a&)
{
if(b&)
{//都是奇数
if(a>b) a=(a-b)>>;
else b=(b-a)>>;
}
else //一奇数一偶数
b=b>>;
}
else//a 是偶数
{
if(b&) a=a>>;
else
{
c=c<<;b=b>>;a=a>>;
}
}
}
return c*a;
} int main()
{
int n,m;
while(scanf("%d%d",&n,&m)>)
{
printf("%d\n",Binary_GCD(n,m));
}
return ;
}