遞歸版更相減損術

《九章算術》中有約分術:

可半者半之,不可半者,復置分母子之數,以少減多,更相減損,求其等也,以等數約之。

在這裏,以這種方法求最大公約數,採用函數遞歸的方法,python實現。

def gcd(a, b, base = 1):
    while a % 2 == 0 and b % 2 == 0:
        a = a / 2
        b = b / 2
        base = base * 2
    if a < b:
        a, b = b, a
    if a == b:
        return a * base
    return gcd(a - b, b, base)

a = input("a: ")
b = input("b: ")
a = int(a)
b = int(b)

c = gcd(a, b)
print("gcd of %d and %d is %d" % (a, b, c))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章