Movatterモバイル変換


[0]ホーム

URL:


跳转到内容
维基百科自由的百科全书
搜索

最小公倍數

本页使用了标题或全文手工转换
维基百科,自由的百科全书
描述12、18之間的因倍數關係的文氏圖

最小公倍數(英語:least common multiple,lcm)是数论中的一个概念。若有一個數X{\displaystyle X},可以被另外兩個數A{\displaystyle A}B{\displaystyle B}整除,且X{\displaystyle X}同時大於或等于A{\displaystyle A}B{\displaystyle B},則X{\displaystyle X}A{\displaystyle A}B{\displaystyle B}公倍數A{\displaystyle A}B{\displaystyle B}的公倍數有無限個,而所有正的公倍數中,最小的公倍數就叫做最小公倍數。同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数。n{\displaystyle n}个整数a1,a2,,an{\displaystyle a_{1},a_{2},\cdots ,a_{n}}的最小公倍数一般记作:[a1,a2,,an]{\displaystyle [a_{1},a_{2},\cdots ,a_{n}]},或者参照英文记法记作lcm(a1,a2,,an){\displaystyle \operatorname {lcm} (a_{1},a_{2},\cdots ,a_{n})}

分數进行加減运算時,要求兩數的分母相同才能計算,故需要通分;标准的计算步骤是将兩個分數的分母通分成它们的最小公倍數,然后将通分后的分子相加。

与最大公因数之关系

[编辑]

两个整数的最小公倍数与最大公因数之间有如下的关系:

lcm(a,b)=|ab|gcd(a,b){\displaystyle \operatorname {lcm} (a,b)={\frac {|a\cdot b|}{\operatorname {gcd} (a,b)}}}

计算方法

[编辑]

最小公倍数可以通过多种方法得到,最直接的方法是列举法,从小到大列举出其中一个数(如最大數)的倍数,当这个倍数也是另一个数的倍数时,就求得最小公倍数。另一个方法是利用公式lcm(a1,a2)=a1a2gcd(a1,a2){\displaystyle \operatorname {lcm} (a_{1},a_{2})={\frac {a_{1}a_{2}}{\gcd(a_{1},a_{2})}}}来求解,这时首先要知道它们的最大公因数。而最大公因数可以通过短除法得到。

利用整数的唯一分解定理,还可以用質因數分解法。将每个整数进行质因数分解。对每个质数,在质因数分解的表达式中寻找次数最高的乘幂,最后将所有这些质数乘幂相乘就可以得到最小公倍数。譬如求216384210的最小公倍數。对216384210来说:

216=23×33{\displaystyle 216=2^{3}\times 3^{3}}384=27×31{\displaystyle 384=2^{7}\times 3^{1}}210=21×31×51×71{\displaystyle 210=2^{1}\times 3^{1}\times 5^{1}\times 7^{1}}
其中2{\displaystyle 2}对应的最高次乘幂为27{\displaystyle 2^{7}}3{\displaystyle 3}对应的最高次乘幂为33{\displaystyle 3^{3}}5{\displaystyle 5}7{\displaystyle 7}对应的最高次乘幂分别是51{\displaystyle 5^{1}}71{\displaystyle 7^{1}}。将这些乘幂乘起来,就可以得到最小公倍数:
[216,384,210]=27×33×51×71=120960{\displaystyle [216,384,210]=2^{7}\times 3^{3}\times 5^{1}\times 7^{1}=120960}

短除法

利用短除法,可以快速计算出多个整数的最小公倍数。

以下为例子:

假设我们要求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

递归计算多个整数的最小公倍数

[编辑]

可以递归求出多个整数的最小公倍数:欲求lcm(a1,...,an)(n3){\displaystyle \operatorname {lcm} (a_{1},...,a_{n})(n\geq 3)},只需求lcm(a1,...,an2,lcm(an1,an)){\displaystyle \operatorname {lcm} (a_{1},...,a_{n-2},\operatorname {lcm} (a_{n-1},a_{n}))}

这利用了性质lcm(a1,a2,a3)=lcm(lcm(a1,a2),a3){\displaystyle \operatorname {lcm} (a_{1},a_{2},a_{3})=\operatorname {lcm} (\operatorname {lcm} (a_{1},a_{2}),a_{3})}。该性质证明如下:

a1,a2,a3{\displaystyle a_{1},a_{2},a_{3}} 的质因数分解分别为i=1npie1i,i=1npie2i,i=1npie3i{\displaystyle \prod _{i=1}^{n}p_{i}^{e_{1i}},\prod _{i=1}^{n}p_{i}^{e_{2i}},\prod _{i=1}^{n}p_{i}^{e_{3i}}},其中pi{\displaystyle p_{i}} 是第i{\displaystyle i} 个质数。

那么根据最小公倍数的定义,lcm(a1,a2,a3)=i=1npimax(e1i,e2i,e3i){\displaystyle \operatorname {lcm} (a_{1},a_{2},a_{3})=\prod _{i=1}^{n}p_{i}^{\max(e_{1i},e_{2i},e_{3i})}}

lcm(lcm(a1,a2),a3)=lcm(i=1npimax(e1i,e2i),a3)=i=1npimax(max(e1i,e2i),e3i)=i=1npimax(e1i,e2i,e3i){\displaystyle \operatorname {lcm} (\operatorname {lcm} (a_{1},a_{2}),a_{3})=\operatorname {lcm} (\prod _{i=1}^{n}p_{i}^{\max(e_{1i},e_{2i})},a_{3})=\prod _{i=1}^{n}p_{i}^{\max(\max(e_{1i},e_{2i}),e_{3i})}=\prod _{i=1}^{n}p_{i}^{\max(e_{1i},e_{2i},e_{3i})}}

证毕。

程式代碼

[编辑]

以下使用輾轉相除法求得最大公因數,之後再求最小公倍數。

C

[编辑]
intGCD(inta,intb){if(b)while((a%=b)&&(b%=a));returna+b;}intLCM(inta,intb){returna*b/GCD(a,b);}

C++

[编辑]
template<typenameT>TGCD(Ta,Tb){if(b)while((a%=b)&&(b%=a));returna+b;}template<typenameT>TLCM(Ta,Tb){returna*b/GCD(a,b);}

C#

[编辑]
intGCD(inta,intb){returna%b==0?b:GCD(b,a%b);}intLCM(inta,intb){returna*b/GCD(a,b);}

Go

[编辑]
funcGCD(a,bint)int{ifb==0{returna}returnGCD(b,a%b)}funcLCM(a,bint)int{returna*b/GCD(a,b)}

Java

[编辑]
intGCD(inta,intb){returna%b==0?b:GCD(b,a%b);}intLCM(inta,intb){returna*b/GCD(a,b);}

Pascal

[编辑]
functiongcd(a,b:integer):longint;beginifb=0thengcd:=aelsegcd:=gcd(b,amodb);end;functionlcm(a,b:integer):longint;beginlcm:=(a*b)divgcd(a,b);end;

Python

[编辑]
defgcd(a,b):returnaifb==0elsegcd(b,a%b)deflcm(a,b):returna*b/gcd(a,b)

Ruby

[编辑]
defgcd(a,b)b.zero??a:gcd(b,a%b)enddeflcm(a,b)a*b/gcd(a,b)end

Swift

[编辑]
funcgcd(_a:Int,_b:Int)->Int{returnb==0?a:gcd(b,a%b)}funclcm(_a:Int,_b:Int)->Int{returna*b/gcd(a,b)}

應用

[编辑]

求最小公倍数是进行分数加减法时的步骤之一。将分母通分时,会把所有分数的分母通分为它们的最小公倍数,然后将分子相加。例如:

221+16=442+742=1142{\displaystyle {2 \over 21}+{1 \over 6}={4 \over 42}+{7 \over 42}={11 \over 42}}

其中分母42就是21与6的最小公倍数。

參見

[编辑]

參考來源

[编辑]
  • 柯召,孙绮,孙琦. 《数论讲义》. 高等教育出版社. 2005.ISBN 753205473X. 
  • 阿尔伯特·H·贝勒著 谈祥柏译. 《数论妙趣:数学女王的盛情款待》. 上海教育出版社. 1998.ISBN 7040091909. 
检索自“https://zh.wikipedia.org/w/index.php?title=最小公倍數&oldid=89604033
分类:​

[8]ページ先頭

©2009-2025 Movatter.jp