【算法杂谈】辗转相除法及二进制优化
【算法杂谈】
【先上代码】
#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; }
By LJX 未经允许禁止转载,转载请标明出处。
受保护的内容包括但不限于:部分CSS代码、C++代码、文字材料等内容。
本网站地址URL:www.ispace.ink