常用算法之最大公约数与最小公倍数

来源:互联网 发布:淘宝客服班培训多少钱 编辑:程序博客网 时间:2024/06/06 11:43

1.欧几里得算法

    欧几里得算法就是采用辗转相处的方法来求最大公约数,这是计算两个数的最大公约数的传统算法,其思路如下:

(1) 对于已知两数m、n,使m>n;

(2)m除以n得余数r;

(3)若r = 0,则n为求得的最大公约数,结束;否则执行步骤4;

(4)将n的值保存到m中,将r的值保存到n中,重复执行步骤2和3。

 

有了最大公约数,求最小公倍数就很简单了,将两数相乘的乘积除以最大公约数即可。

代码:

[java] view plaincopy
  1.    /** 
  2.  * 求最大公约数 
  3.  */  
  4. int gcd(int a,int b){  
  5.     int m,n,r;  
  6.     m = a >= b?a:b;  //m保存较大的数  
  7.     n = a < b?a:b;   //n保存较小的数  
  8.     r = m % n;  
  9.     while(r != 0){  
  10.         m = n;  
  11.         n = r;  
  12.         r = m % n;  
  13.     }  
  14.     return n;  
  15. }  
  16. /** 
  17.  * 求最小公倍数 
  18.  */  
  19. int lcm(int a,int b){  
  20.     int t = gcd(a,b);  
  21.     return (a*b)/t;  
  22. nbsp;        
原创粉丝点击