最小公倍數- 維基百科,自由的百科全書 - Wikipedia

文章推薦指數: 80 %
投票人數:10人

最小公倍數是數論中的一個概念。

... 的公倍數有無限個,而所有正的公倍數中,最小的公倍數就叫做最小公倍數。

同樣地,若干個整數公有的 ... 與最大公因數之關係編輯. 最小公倍數 語言 監視 編輯 最小公倍數是數論中的一個概念。

若有一個數 X {\displaystyleX} ,可以被另外兩個數 A {\displaystyleA} 、 B {\displaystyleB} 整除,且 X {\displaystyleX} 大於(或等於) A {\displaystyleA} 和 B {\displaystyleB} ,則 X {\displaystyleX} 為 A {\displaystyleA} 和 B {\displaystyleB} 的公倍數。

A {\displaystyleA} 和 B {\displaystyleB} 的公倍數有無限個,而所有正的公倍數中,最小的公倍數就叫做最小公倍數。

同樣地,若干個整數公有的倍數中最小的正整數稱為它們的最小公倍數。

n {\displaystylen} 整數 a 1 , a 2 , ⋯ , a n {\displaystylea_{1},a_{2},\cdots,a_{n}} 的最小公倍數一般記作: [ a 1 , a 2 , ⋯ , a n ] {\displaystyle[a_{1},a_{2},\cdots,a_{n}]} ,或者參照英文記法記作 lcm ⁡ ( a 1 , a 2 , ⋯ , a n ) {\displaystyle\operatorname{lcm}(a_{1},a_{2},\cdots,a_{n})} ,其中lcm是英語中「最小公倍數」一詞(leastcommonmultiple)的首字母縮寫。

對分數進行加減運算時,要求兩數的分母相同才能計算,故需要擴分;標準的計算步驟是將兩個分數的分母擴分成它們的最小公倍數,然後將擴分後的分子相加。

目次 1與最大公因數之關係 2計算方法 2.1遞歸計算多個整數的最小公倍數 3程式代碼 3.1C# 3.2C 3.3C++ 3.4PASCAL 3.5JAVA 3.6RUBY 3.7Python 3.8Golang 4應用 5參見 6參考來源 與最大公因數之關係編輯 兩個整數的最小公倍數與最大公因數之間有如下的關係: lcm ⁡ ( a , b ) = | a ⋅ b | gcd ⁡ ( a , b ) {\displaystyle\operatorname{lcm}(a,b)={\frac{|a\cdotb|}{\operatorname{gcd}(a,b)}}}  計算方法編輯 最小公倍數可以通過多種方法得到,最直接的方法是列舉法,從小到大列舉出其中一個數(如最大數)的倍數,當這個倍數也是另一個數的倍數時,就求得最小公倍數。

另一個方法是利用公式 lcm ⁡ ( a 1 , a 2 ) = a 1 a 2 gcd ( a 1 , a 2 ) {\displaystyle\operatorname{lcm}(a_{1},a_{2})={\frac{a_{1}a_{2}}{\gcd(a_{1},a_{2})}}}  來求解,這時首先要知道它們的最大公因數。

而最大公因數可以通過短除法得到。

利用整數的唯一分解定理,還可以用質因數分解法。

將每個整數進行質因數分解。

對每個質數,在質因數分解的表達式中尋找次數最高的乘冪,最後將所有這些質數乘冪相乘就可以得到最小公倍數。

譬如求216、384和210的最小公倍數。

對216、384和210來說: 216 = 2 3 × 3 3 {\displaystyle216=2^{3}\times3^{3}}  , 384 = 2 7 × 3 1 {\displaystyle384=2^{7}\times3^{1}}  , 210 = 2 1 × 3 1 × 5 1 × 7 1 {\displaystyle210=2^{1}\times3^{1}\times5^{1}\times7^{1}}  。

其中 2 {\displaystyle2}  對應的最高次乘冪為 2 7 {\displaystyle2^{7}}  ; 3 {\displaystyle3}  對應的最高次乘冪為 3 3 {\displaystyle3^{3}}  ; 5 {\displaystyle5}  和 7 {\displaystyle7}  對應的最高次乘冪分別是 5 1 {\displaystyle5^{1}}  與 7 1 {\displaystyle7^{1}}  。

將這些乘冪乘起來,就可以得到最小公倍數: [ 216 , 384 , 210 ] = 2 7 × 3 3 × 5 1 × 7 1 = 120960 {\displaystyle[216,384,210]=2^{7}\times3^{3}\times5^{1}\times7^{1}=120960}  。

遞歸計算多個整數的最小公倍數編輯 可以遞歸求出多個整數的最小公倍數:欲求 lcm ⁡ ( a 1 , . . . , a n ) ( n ≥ 3 ) {\displaystyle\operatorname{lcm}(a_{1},...,a_{n})(n\geq3)}  ,只需求 lcm ⁡ ( a 1 , . . . , a n − 2 , lcm ⁡ ( a n − 1 , a n ) ) {\displaystyle\operatorname{lcm}(a_{1},...,a_{n-2},\operatorname{lcm}(a_{n-1},a_{n}))}  。

這利用了性質 lcm ⁡ ( a 1 , a 2 , a 3 ) = lcm ⁡ ( lcm ⁡ ( a 1 , a 2 ) , a 3 ) {\displaystyle\operatorname{lcm}(a_{1},a_{2},a_{3})=\operatorname{lcm}(\operatorname{lcm}(a_{1},a_{2}),a_{3})}  。

該性質證明如下: 記 a 1 , a 2 , a 3 {\displaystylea_{1},a_{2},a_{3}}  的質因數分解分別為 ∏ i = 1 n p i e 1 i , ∏ i = 1 n p i e 2 i , ∏ i = 1 n p i e 3 i {\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}}}  ,其中 p i {\displaystylep_{i}}  是第 i {\displaystylei}  個質數。

那麼根據最小公倍數的定義, lcm ⁡ ( a 1 , a 2 , a 3 ) = ∏ i = 1 n p i max ( e 1 i , e 2 i , e 3 i ) {\displaystyle\operatorname{lcm}(a_{1},a_{2},a_{3})=\prod_{i=1}^{n}p_{i}^{\max(e_{1i},e_{2i},e_{3i})}}  , lcm ⁡ ( lcm ⁡ ( a 1 , a 2 ) , a 3 ) = lcm ⁡ ( ∏ i = 1 n p i max ( e 1 i , e 2 i ) , a 3 ) = ∏ i = 1 n p i max ( max ( e 1 i , e 2 i ) , e 3 i ) = ∏ i = 1 n p i max ( e 1 i , e 2 i , e 3 i ) {\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) { returna%b==0?b:GCD(b,a%b); } intLCM(inta,intb) { returna*b/GCD(a,b); } C編輯 intGCD(inta,intb){ if(b)while((a%=b)&&(b%=a)); returna+b; } intLCM(inta,intb){ returna*b/GCD(a,b); } C++編輯 template TGCD(Ta,Tb){ if(b)while((a%=b)&&(b%=a)); returna+b; } template TLCM(Ta,Tb){ returna*b/GCD(a,b); } PASCAL編輯 1、 vara,b,ans:integer; functiongcd(a,b:integer):longint; begin ifb=0thengcd:=a elsegcd:=gcd(b,amodb); end; 2、 vara,b,ans:integer; functionlcm(a,b:integer):longint; begin readln(a,b); ans:=(a*b)divgcd(a,b); write(ans); end; JAVA編輯 intGCD(inta,intb){ returna%b==0?b:GCD(b,a%b); } intLCM(inta,intb){ returna*b/GCD(a,b); } RUBY編輯 defgcd(a,b) b.zero??a:gcd(b,a%b) end deflcm(a,b) a*b/gcd(a,b) end Python編輯 defgcd(a,b): returnaifb==0elsegcd(b,a%b) deflcm(a,b): returna*b/gcd(a,b) Golang編輯 funcGCD(a,bint)int{ ifb==0{ returna } ifa%b==0{ returnb } returnGCD(b,a%b) } funcLCM(a,bint)int{ returna*b/GCD(a,b) } 應用編輯 求最小公倍數是進行分數加減法時的步驟之一。

將分母擴分時,會把所有分數的分母擴分為它們的最小公倍數,然後將分子相加。

例如: 2 21 + 1 6 = 4 42 + 7 42 = 11 42 {\displaystyle{2\over21}+{1\over6}={4\over42}+{7\over42}={11\over42}}  其中分母42就是21與6的最小公倍數。

參見編輯 公倍數 公因數 最大公因數參考來源編輯 柯召,孫綺,孫琦.《数论讲义》.高等教育出版社.2005.ISBN 753205473X.  阿爾伯特·H·貝勒著談祥柏譯.《数论妙趣:数学女王的盛情款待》.上海教育出版社.1998.ISBN 7040091909.  取自「https://zh.wikipedia.org/w/index.php?title=最小公倍數&oldid=71413804」



請為這篇文章評分?