码迷,mamicode.com
首页 > 编程语言 > 详细

欧几里得算法(辗转相除法)

时间:2015-03-28 23:03:04      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

辗转相除法可以用来计算两个整数的最大公因数(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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!