一 写在开头
1.1 本节内容
本文的主要内容是介绍一种两个数最小公倍数(Lowest Common Multiple)的求解方法。
二 最小公倍数求法
2.1 算法原理
两个数的公倍数可以是无限多个,但最小公倍数只有一个。在前面的文章中介绍了两数最大公约数的求解方法。这里介绍一种两个数的最小公倍数的求法。其基于的原理是两个数的最小公倍数会等于两个数的乘积除以两个数的最大公约数的结果。即:
LCM(a, b) = (a * b) / GCD(a, b)
下面结合最大公约数的求法使用C语言实现最小公倍数的求法。
2.2 算法的C语言实现
1 /* 辗转相除法求最大公约数 */ 2 long GetGCD(long a, long b) 3 { 4 return (a % b == 0) ? b : GetGCD(b, a % b); 5 } 6 7 /* 求最小公倍数 */ 8 long GetLCM(long a, long b) 9 { 10 return a / GetGCD(a, b) * b; 11 }
注意:之所以先除以最大公约数再相乘是为了减少溢出可能。