題目
求三個數的最小公倍數
思路
首先求兩個數的最小公倍數,再求這個最小公倍數與第三個數的最小公倍數就是最終結果
有兩種方案求兩個數的最小公倍數
1. 分解質因數,也是短除法(在程序上差別不大)
循環:從2開始遍歷到兩個數中的較小數字,如果能同時被兩個數整除,那么這個數同時是兩個數的因數
兩個數同時除以這個最小因數,再開始新一輪遍歷,直到兩個數互質
之后將這兩個互質的數和所有得到的因數相乘,結果就是兩個數的最小公倍數
2. 公式法
根據公式:兩個數的最小公倍數=兩個數的乘積/兩個數的最大公因數
最大公因數可以由分解質因數、輾轉相除法、更相減損法等得到
這里求最大公因數的分解質因數與求最小公倍數的不同之處在於,最小公倍數要將所有因數都乘起來,而 最大公因數只需要將不同的因數相乘(即出現相同的因數,只乘一次)
Python源代碼:
這里列出使用公式法求三個數的最小公倍數,而求最大公因數使用了輾轉相除法
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)
