yuandiyuandi123 发表于 2018-5-17 19:22:54

求助~关于求最大公约数的问题

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)


为什么结果不对捏?

BngThea 发表于 2018-5-17 21:55:55

while循环逻辑不对,你将a赋值为b,那么下面的a%b肯定为零
试试修改为
a,b=b,a%b

thexiosi 发表于 2018-5-18 09:01:51

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)

yuandiyuandi123 发表于 2018-5-18 17:44:16

BngThea 发表于 2018-5-17 21:55
while循环逻辑不对,你将a赋值为b,那么下面的a%b肯定为零
试试修改为
a,b=b,a%b

看明白了谢谢~

zhdwinter 发表于 2018-5-20 17:45:48

你这逻辑都不对你都a=b 了然后又算a%b 肯定为0啊输出的应该是b的值
页: [1]
查看完整版本: 求助~关于求最大公约数的问题