3數字最小公倍數算法

求三個數字的最低公倍數(LCM)通常可以使用以下算法:

  1. 分解質因數法:將每個數分解質因數,然後找出所有相同的質因數,將它們相乘得到最低公倍數。

  2. 輾轉相除法(又稱歐幾里得算法):可以用來求兩個數字的最低公倍數,但是擴展到三個數字時,需要兩兩求最低公倍數,然後求這兩個最低公倍數的最大公約數。

  3. 使用質因數分解表:如果數字比較大,可以使用已經計算好的質因數分解表來快速找到最低公倍數。

下面是一個使用分解質因數法的例子:

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),因為gcdlcm函式的時間複雜度都是O(n),我們需要對三個數兩兩求最低公倍數,所以總的時間複雜度是O(n^2)。如果數字很大,可以使用更高效的質因數分解算法來最佳化這個算法。