最小公倍數(shù)=兩整數(shù)的乘積÷最大公約數(shù)
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供鄒平網(wǎng)站建設(shè)、鄒平做網(wǎng)站、鄒平網(wǎng)站設(shè)計、鄒平網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、鄒平企業(yè)網(wǎng)站模板建站服務(wù),十余年鄒平做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
思路:輸入多個整數(shù),依次兩個數(shù)求最小公倍數(shù),將前兩個數(shù)的最小公倍數(shù)和下一個數(shù)再次求最小公倍數(shù),求到最后就是結(jié)果
"""
def func(*args):
size = len(args)
idx = 1
i = args[0]
while idx size:
j = args[idx]
# 用輾轉(zhuǎn)相除法求i,j的最大公約數(shù)m
b = i if i j else j # i,j中較小那個值
a = i if i j else j # i,j中較大那個值
r = b # a除以b的余數(shù)
while(r != 0):
r = a % b
if r != 0:
a = b
b = r
f = i*j/b # 兩個數(shù)的最小公倍數(shù)
i = f
idx += 1
return f
一、求最大公約數(shù)
用輾轉(zhuǎn)相除法求最大公約數(shù)的算法如下:
兩個正整數(shù)a和b(ab),它們的最大公約數(shù)等于a除以b的余數(shù)c和b之間的最大公約數(shù)。比如10和25,25除以10商2余5,那么10和25的最大公約數(shù),等同于10和5的最大公約數(shù)。
具體代碼如下:def gongyue(a, b):
"""
歐幾里得算法----輾轉(zhuǎn)相除法
:param a: 第一個數(shù)
:param b: 第二個數(shù)
:return: 最大公約數(shù)
"""
如果最終余數(shù)為0 公約數(shù)就計算出來了
while(b!=0):
temp = a % b
a = b
b = temp
return a
二、求最小公倍數(shù)
求出a,b的最大公約數(shù)后,利用gongbei(a,b) = (a*b)/gongyue(a,b) 計算出兩個數(shù)的最小公倍數(shù):
求兩個數(shù)的最小公倍數(shù)
def gongbei(a,b):
return a * b / gongyue(a, b)
先求出兩個正整數(shù)的質(zhì)數(shù)乘積(單獨一個函數(shù))。
參考輸出,例:40返回值是{"2":3,"5":1}意思是2的3次方*5,就是合并,并且保留指數(shù)最大的就行。
def gcd(a, b): # 求最大公約數(shù)
x = a % b
while (x != 0):
a, b = b, x
x = a % b
return b
def lcm(a,b): # 求最小公倍數(shù)
return a*b//gcd(a,b)
擴(kuò)展資料:
最小公倍數(shù)的適用范圍:分?jǐn)?shù)的加減法,中國剩余定理(正確的題在最小公倍數(shù)內(nèi)有解,有唯一的解)。因為,素數(shù)是不能被1和自身數(shù)以外的其它數(shù)整除的數(shù);素數(shù)X的N次方,是只能被X的N及以下次方,1和自身數(shù)整除。所以,給最小公倍數(shù)下一個定義:S個數(shù)的最小公倍數(shù),為這S個數(shù)中所含素因子的最高次方之間的乘積。
參考資料來源:百度百科-最小公倍數(shù)