最大公约数问题
def gcd(a, b):if b > a:#
a, b = b, a# b为最小值
if a%b == 0:# 判断b是否是最大公约数
return b
for i in range(b//2+1, 1, -1):#倒叙求最大公约数更快
if a%i == 0 and b%i == 0:
return i
return 0
while True:
a = int(input('请输入第一个数: '))
b = int(input('请输入第二个数: '))
print('最大公约数是:', gcd(a, b))
c = input('还要继续操作吗?q: ')
if c == 'q':
break
else:
continue
这是一个求两个数最大公约数的程序,里边有两点不明白。
1.if b > a:#
a, b = b, a# b为最小值
这句是什么意思?为什么这么做?
2. return 0 这里返回0是什么意思啊?
第一个就是确保较大的数在第一个参数那里,较小的数在第二个参数那里
第二个return 0是问题代码,0不可能作为公约数 wp231957 发表于 2021-6-9 21:20
第一个就是确保较大的数在第一个参数那里,较小的数在第二个参数那里
第二个return 0是问题代码,0不可 ...
.if b > a: a, b = b, a 这个做法就是为了继续执行if a%b == 0: return b 做准备的吧。
return 0 是不是可以认为一旦返回了0,那么就说明程序有问题,是吗? 江湖散人 发表于 2021-6-9 21:47
.if b > a: a, b = b, a 这个做法就是为了继续执行if a%b == 0: return b 做准备的吧。
return 0...
多测试一些案例,你就知道原代码是否正确
页:
[1]