【算法杂谈】
【先上代码】
#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; }