需要知识
欧几里德算法
这种算法,在中国则可以追溯至东汉出现的《九章算术》。——百度百科
简单明了的最大公因数计算算法。
int gcd(int a,int b){ return b==0?a:gcd(b,a%b); }
证明如下
- 有整数X,Y。其中,X=a*r,Y=b*r(a,b互质,且r为最大公因数)。有X-Y=(a-b)*r。则,X、Y、X-Y互相间最大公因数相同。
- 有整数X,Y。其中,X=a*r+c,Y=b*r+d(r为最大公因数,且c,d小于r)。设e=X%Y,也即(e+d+b*r)*n=a*r+c,有e=a*r+c-d-b*r=(a-b)*r+(c-d),所以X、Y、X%Y互相间最大公因数相同。