更相減損術求解最大公約數

yuzhang_zy發表於2020-11-07

求解兩個int型別數字a, b的最大公約數的常用的辦法一般有兩種:第一種是輾轉相除術,第二種是更相減損術,下面使用更相減損術求解最大公約數:

設A > B,A = ax, B = bx 則C = A - B = ax - bx,所以A、B、C的最大公約數也為x,所以可以轉換為:

如果A > B,則 gcd(A,B) = gcd(B,A-B)
如果A < B,則 gcd(A,B) = gcd(A,B-A)

下面是具體的程式程式碼:

class Solution:
    def gcd(self, a: int, b: int) -> int:
        while a != b:
            if a > b:
                a = a - b
            else:
                b = b - a
        return a


if __name__ == '__main__':
    print(Solution().gcd(eval(input()), eval(input())))

 

相關文章