辗转相除法可以用来计算两个整数的最大公因数(Dcd)。
利用辗转相除法求最大公因数的步骤如下:
第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;
第二步:若r0=0,则n为m,n的最大公因数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;
第三步:若r1=0,则r1为m,n的最大公因数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2;
……
依次计算直至rn=0,此时所得到的rn-1即为所求的最大公因数。
简单来说,如果有两个正整数m,n(m>n),则m与n的最大公因数等于n和m%n的最大公因数,若n=0,m和n的最大公因数等于m。
int Gcd(int m,int n) //假定m>n { if(n==0) return m; else return Gcd(n,m%n); }
如果要求两个数的最小公倍数,只需先求出gcd,再把两数之积除以Gcd即可。
补充一个定理:
如果M>N,则M mod N<M/2。
证明:
存在两种情况。如果N<=M/2,则由于余数小于N,故定理成立。如果N>M/2,此时M仅含有一个N,从而余数为M-N<M/2,定理得证。
原文:http://www.cnblogs.com/yaoyueduzhen/p/4374209.html