3數字最小公倍數算法
求三個數字的最低公倍數(LCM)通常可以使用以下算法:
-
分解質因數法:將每個數分解質因數,然後找出所有相同的質因數,將它們相乘得到最低公倍數。
-
輾轉相除法(又稱歐幾里得算法):可以用來求兩個數字的最低公倍數,但是擴展到三個數字時,需要兩兩求最低公倍數,然後求這兩個最低公倍數的最大公約數。
-
使用質因數分解表:如果數字比較大,可以使用已經計算好的質因數分解表來快速找到最低公倍數。
下面是一個使用分解質因數法的例子:
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
def lcm(a, b):
return a * b // gcd(a, b)
def lcm_of_three_numbers(a, b, c):
lcm12 = lcm(a, b)
lcm23 = lcm(b, c)
lcm13 = lcm(a, c)
return lcm(lcm12, lcm23) // gcd(lcm12, lcm13)
# 示例
a = 6
b = 8
c = 10
print(lcm_of_three_numbers(a, b, c))
這個例子中,我們定義了gcd
函式來計算最大公約數,lcm
函式來計算兩個數的最低公倍數,然後lcm_of_three_numbers
函式用來計算三個數的最低公倍數。最後,我們列印出6, 8, 10
的最低公倍數。
注意,這個算法的時間複雜度是O(n^2)
,因為gcd
和lcm
函式的時間複雜度都是O(n)
,我們需要對三個數兩兩求最低公倍數,所以總的時間複雜度是O(n^2)
。如果數字很大,可以使用更高效的質因數分解算法來最佳化這個算法。