【算法杂谈】
【先上代码】
#include<iostream>
#include<algorithm>
using namespace std;
int GCD(int x,int y)
{
return y == 0 ? x : GCD(y,x%y);
}
inline int FASTGCD(int x,int y)
{
int i,j;
if(x==0) return y;
if(y==0) return x;
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;
}
}
int main()
{
int x,y;
bool sec;
cout<<"FASTGCD=1"<<endl<<"GCD=0";
cout<<endl<<"Your choose:";
cin>>sec;
cout<<endl;
if(sec) {cin>>x>>y;cout<<FASTGCD(x,y);}
else {cin>>x>>y;cout<<GCD(x,y);}
return 0;
}