Stein算法--求解最大公约数
时间:2011-05-21 来源:microsoftmvp
实现如下:
#include<iostream>
using namespace std;
int Gcd(unsigned int a,unsigned int b)
{
if(b>a)
return Gcd(b,a);
if(!b)
return a;
if(!(a&1))
{
if(!(b&1))
{
//a and b are both even
return Gcd(a>>1,b>>1)<<1;
}
else
{
return Gcd(a>>1,b);
}
}
else
{
if(!(b&1))
return Gcd(a,b>>1);
else
return Gcd((a-b)>>1,b);
}
}
int main()
{
unsigned int a,b;
while(cin>>a>>b)
cout<<Gcd(a,b)<<endl;
return 0;
}
相关阅读 更多 +