1. 程式人生 > >歐幾里得演算法證明及python實現

歐幾里得演算法證明及python實現

1.歐幾里得演算法:

        歐幾里得演算法又稱輾轉相除法,是求兩個整數的最大公約數非常有效的演算法,具體內容是:兩個整數的最大公約數等於其中較小的那個數和兩數相除餘數的最大公約數。

2.歐幾里得演算法證明 :         

        a可以表示成a = kb + r(a,b,k,r皆為正整數,且r < b),則r = a mod b。

        假設d是a,b的一個公約數,記作d|a,d|b,即a和b都可以被d整除。而r = a - kb,兩邊同時除以d,r/d=a/d-kb/d=m,由等式右邊可知m為整數,因此d|r。因此d也是b,a mod b的公約數。

        假設d是b,a mod b的公約數, 則d|b,d|(a - k * b),k是一個整數。進而d|a,因此d也是a,b的公約數因此(a,b)和(b,a mod b)的公約數是一樣的,其最大公約數也必然相等,得證。

3.歐幾里得演算法python實現:

        使用遞迴方法實現,當較小整數為0時,則表明上一次相除已除盡,所以上一次相除時的除數(當次輸入gcd函式的較大數)是最大公約數。當較小整數不為0時,則繼續遞迴呼叫gcd函式。

def gcd(a, b):
    if a < b:
        a, b = b, a
    return a if b == 0 else gcd(b, a % b)

if __name__ == "__main__":
    print(gcd(8, 16))
    print(gcd(8251, 6105))