题目:两个整数x,y,它们的最大公约数d必须满足d|x,而且d|y。其中符号“|”表示整除,d|x表示x是d的倍数,或者说x能够整除d。要求设计一个算法来计算最大公约数,算法不能使用乘法,除法和求余运算。
分析:假设有两个整数a,b,其中a>b,求它们的最大公约数。先求两数相除后的余数,于是先对a,b进行求余运算。假设他们相除后余数是d,即d = a % b,那么a,b的最大公约数就等于b,d的最大公约数。
code:
def gcd(a, b):
if a % b == 0:
return b
d = a % b
return gcd(b, d)
a = 128
b = 48
print("the greatest common divisor of {0} and {1} is :{2}".format(a, b, gcd(a, b)))
程序运行结果:
the greatest common divisor of 128 and 48 is :16