《九章算術》中有約分術:
可半者半之,不可半者,復置分母子之數,以少減多,更相減損,求其等也,以等數約之。
在這裏,以這種方法求最大公約數,採用函數遞歸的方法,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))