1.欧几里得算法
欧几里得算法就是采用辗转相处的方法来求最大公约数,这是计算两个数的最大公约数的传统算法,其思路如下:
(1) 对于已知两数m、n,使m>n;
(2)m除以n得余数r;
(3)若r = 0,则n为求得的最大公约数,结束;否则执行步骤4;
(4)将n的值保存到m中,将r的值保存到n中,重复执行步骤2和3。
有了最大公约数,求最小公倍数就很简单了,将两数相乘的乘积除以最大公约数即可。
代码:
/**
* 求最大公约数
*/
int gcd(int a,int b){
int m,n,r;
m = a >= b?a:b; //m保存较大的数
n = a < b?a:b; //n保存较小的数
r = m % n;
while(r != 0){
m = n;
n = r;
r = m % n;
}
return n;
}
/**
* 求最小公倍数
*/
int lcm(int a,int b){
int t = gcd(a,b);
return (a*b)/t;
}