題目
求三個數(shù)的最小公倍數(shù)
思路
首先求兩個數(shù)的最小公倍數(shù)义锥,再求這個最小公倍數(shù)與第三個數(shù)的最小公倍數(shù)就是最終結(jié)果
有兩種方案求兩個數(shù)的最小公倍數(shù)
1. 分解質(zhì)因數(shù),也是短除法(在程序上差別不大)
循環(huán):從2開始遍歷到兩個數(shù)中的較小數(shù)字,如果能同時被兩個數(shù)整除,那么這個數(shù)同時是兩個數(shù)的因數(shù)
兩個數(shù)同時除以這個最小因數(shù),再開始新一輪遍歷辽狈,直到兩個數(shù)互質(zhì)
之后將這兩個互質(zhì)的數(shù)和所有得到的因數(shù)相乘,結(jié)果就是兩個數(shù)的最小公倍數(shù)
2. 公式法
根據(jù)公式:兩個數(shù)的最小公倍數(shù)=兩個數(shù)的乘積/兩個數(shù)的最大公因數(shù)
最大公因數(shù)可以由分解質(zhì)因數(shù)模她、輾轉(zhuǎn)相除法、更相減損法等得到
這里求最大公因數(shù)的分解質(zhì)因數(shù)與求最小公倍數(shù)的不同之處在于懂牧,最小公倍數(shù)要將所有因數(shù)都乘起來侈净,而 最大公因數(shù)只需要將不同的因數(shù)相乘(即出現(xiàn)相同的因數(shù),只乘一次)
Python源代碼:
這里列出使用公式法求三個數(shù)的最小公倍數(shù)僧凤,而求最大公因數(shù)使用了輾轉(zhuǎn)相除法
def get_max_yinshu(x,y):
while(True):
if(x<y):
x,y=y,x
if(x%y==0):
return int(y)
else:
temp=x%y
x=y
y=temp
a,b,c=map(int,input().split())
a_b=get_max_yinshu(a,b)
a_b=int((a*b)/a_b)
a_b_c=get_max_yinshu(a_b,c)
a_b_c=int((a_b*c)/a_b_c)
print(a_b_c)