求助~关于求最大公约数的问题
def gcd(x,y):tuple1 = (x,y)
a = max(tuple1)
b = min(tuple1)
print(a)
print(b)
while b :
a = b
b = a%b
return a
while True:
num1 = int(input("请输入第一个数字:"))
num2 = int(input('请输入第二个数字:'))
x = gcd(num1,num2)
print(x)
为什么结果不对捏? while循环逻辑不对,你将a赋值为b,那么下面的a%b肯定为零
试试修改为
a,b=b,a%b hi
1. 出错原因:程序逻辑发生错误 'a = b',下面有详细分析
2. 代码建议:判断数字大小的代码可以去掉,while循环已经实现了该功能
def gcd(a,b):
#tuple1 = (x,y)# 判断数字大小的代码可以去掉,while循环可以实现该功能
#a = max(tuple1)
#b = min(tuple1)
while b : #比如 a=6, b=4
#a = b #这行代码导致 a=4,从而 b为0
#b = a%b
a,b = b, a%b #这样赋值可以避免上面的逻辑错误
return a
while True:
num1 = int(input("请输入第一个数字:"))
num2 = int(input('请输入第二个数字:'))
x = gcd(num1,num2)
print(x)
BngThea 发表于 2018-5-17 21:55
while循环逻辑不对,你将a赋值为b,那么下面的a%b肯定为零
试试修改为
a,b=b,a%b
看明白了谢谢~ 你这逻辑都不对你都a=b 了然后又算a%b 肯定为0啊输出的应该是b的值
页:
[1]