1. 程式人生 > >最大公約數歐幾里德演算法及Python實現

最大公約數歐幾里德演算法及Python實現


歐幾里德演算法又稱輾轉相除法,用於計算兩個整數m, n的最大公約數。其計算原理依賴於下面的定理:

    gcd(m, n) = gcd(n, m mod n)

這個定理的意思是:整數m、n的最大公約數等於n和m除以n的餘數的最大公約數。

例如:有兩個整數:120和45,我們按照上面的方法求他們的最大公約數。

    1. gcd(120, 45) = gcd(45, 120 % 45) = gcd(45, 30)
    2. gcd(45, 30) = gcd(30, 45 % 30) = gcd(30, 15)
    3. gcd(30, 15) = gcd(15, 30 % 15) = gcd(15, 0) = 15

當 m % n 等於零時,即求15和0的最大公約數時,這個迴圈應該終止,15就是120和45的最大公約數。

Python程式碼實現如下:
def gcd(m, n):
    
while n:
        m, n 
= n, m % n
    
return m
參考:歐幾里德演算法及Python實現