最小公倍數
维基媒体项目贡献者
Article Images最小公倍數(英語:least common multiple,lcm)是数论中的一个概念。若有一個數,可以被另外兩個數、整除,且同時大於或等于和,則為和的公倍數。和的公倍數有無限個,而所有正的公倍數中,最小的公倍數就叫做最小公倍數。同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数。整数的最小公倍数一般记作:,或者参照英文记法记作。
对分數进行加減运算時,要求兩數的分母相同才能計算,故需要通分;标准的计算步骤是将兩個分數的分母通分成它们的最小公倍數,然后将通分后的分子相加。
最小公倍数可以通过多种方法得到,最直接的方法是列举法,从小到大列举出其中一个数(如最大數)的倍数,当这个倍数也是另一个数的倍数时,就求得最小公倍数。另一个方法是利用公式 来求解,这时首先要知道它们的最大公因数。而最大公因数可以通过短除法得到。
利用整数的唯一分解定理,还可以用質因數分解法。将每个整数进行质因数分解。对每个质数,在质因数分解的表达式中寻找次数最高的乘幂,最后将所有这些质数乘幂相乘就可以得到最小公倍数。譬如求216、384和210的最小公倍數。对216、384和210来说:
- , , 。
- 其中 对应的最高次乘幂为 ; 对应的最高次乘幂为 ; 和 对应的最高次乘幂分别是 与 。将这些乘幂乘起来,就可以得到最小公倍数:
- 。
短除法
利用短除法,可以快速计算出多个整数的最小公倍数。
以下为例子:
假设我们要求12、20和42的最小公倍数。
a: 6 |12 18 42
b: 2 3 7
最小公倍数=a×b
因此,12、18和42和最小公倍数=6×2×3×7
所以,6×2×3×7=252,12、18和42的最小公倍数是252
可以递归求出多个整数的最小公倍数:欲求 ,只需求 。
这利用了性质 。该性质证明如下:
记 的质因数分解分别为 ,其中 是第 个质数。
那么根据最小公倍数的定义, ,
,
证毕。
以下使用輾轉相除法求得最大公因數,之後再求最小公倍數。
int GCD(int a, int b) { if(b) while((a %= b) && (b %= a)); return a + b; } int LCM(int a, int b) { return a * b / GCD(a, b); }
template<typename T> T GCD(T a, T b) { if (b) while((a %= b) && (b %= a)); return a + b; } template<typename T> T LCM(T a, T b) { return a * b / GCD(a, b); }
int GCD(int a, int b) { return a % b == 0 ? b : GCD(b, a % b); } int LCM(int a, int b) { return a * b / GCD(a, b); }
func GCD(a, b int) int { if b == 0 { return a } return GCD(b, a%b) } func LCM(a, b int) int { return a * b / GCD(a, b) }
int GCD(int a, int b) { return a % b == 0 ? b : GCD(b, a % b); } int LCM(int a, int b) { return a * b / GCD(a, b); }
function gcd(a,b:integer):longint; begin if b=0 then gcd:=a else gcd:=gcd(b,a mod b); end; function lcm(a,b:integer):longint; begin lcm:=(a*b) div gcd(a,b); end;
def gcd(a, b): return a if b == 0 else gcd(b, a % b) def lcm(a, b): return a * b / gcd(a, b)
def gcd(a, b) b.zero? ? a : gcd(b, a % b) end def lcm(a, b) a * b / gcd(a, b) end
func gcd(_ a: Int, _ b: Int) -> Int { return b == 0 ? a : gcd(b, a % b) } func lcm(_ a: Int, _ b: Int) -> Int { return a * b / gcd(a, b) }
求最小公倍数是进行分数加减法时的步骤之一。将分母通分时,会把所有分数的分母通分为它们的最小公倍数,然后将分子相加。例如:
其中分母42就是21与6的最小公倍数。
- 柯召,孙绮,孙琦. 《数论讲义》. 高等教育出版社. 2005. ISBN 753205473X.
- 阿尔伯特·H·贝勒著 谈祥柏译. 《数论妙趣:数学女王的盛情款待》. 上海教育出版社. 1998. ISBN 7040091909.