鱼C论坛

 找回密码
 立即注册
查看: 2737|回复: 4

[已解决]求助~关于求最大公约数的问题

[复制链接]
发表于 2018-5-17 19:22:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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)


为什么结果不对捏?
最佳答案
2018-5-18 09:01:51
hi
1. 出错原因:程序逻辑发生错误 'a = b',下面有详细分析
2. 代码建议:判断数字大小的代码可以去掉,while循环已经实现了该功能


  1. def gcd(a,b):
  2.      #tuple1 = (x,y)  # 判断数字大小的代码可以去掉,while循环可以实现该功能
  3.      #a = max(tuple1)
  4.      #b = min(tuple1)

  5.      while b :   #比如 a=6, b=4
  6.           #a = b    #这行代码导致 a=4,从而 b为0
  7.           #b = a%b
  8.         a,b = b, a%b #这样赋值可以避免上面的逻辑错误
  9.      return a
  10. while True:
  11.      num1 = int(input("请输入第一个数字:"))
  12.      num2 = int(input('请输入第二个数字:'))
  13.      x = gcd(num1,num2)
  14.      print(x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-17 21:55:55 From FishC Mobile | 显示全部楼层
while循环逻辑不对,你将a赋值为b,那么下面的a%b肯定为零
试试修改为
a,b=b,a%b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-18 09:01:51 | 显示全部楼层    本楼为最佳答案   
hi
1. 出错原因:程序逻辑发生错误 'a = b',下面有详细分析
2. 代码建议:判断数字大小的代码可以去掉,while循环已经实现了该功能


  1. def gcd(a,b):
  2.      #tuple1 = (x,y)  # 判断数字大小的代码可以去掉,while循环可以实现该功能
  3.      #a = max(tuple1)
  4.      #b = min(tuple1)

  5.      while b :   #比如 a=6, b=4
  6.           #a = b    #这行代码导致 a=4,从而 b为0
  7.           #b = a%b
  8.         a,b = b, a%b #这样赋值可以避免上面的逻辑错误
  9.      return a
  10. while True:
  11.      num1 = int(input("请输入第一个数字:"))
  12.      num2 = int(input('请输入第二个数字:'))
  13.      x = gcd(num1,num2)
  14.      print(x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-18 17:44:16 | 显示全部楼层
BngThea 发表于 2018-5-17 21:55
while循环逻辑不对,你将a赋值为b,那么下面的a%b肯定为零
试试修改为
a,b=b,a%b

看明白了  谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-20 17:45:48 From FishC Mobile | 显示全部楼层
你这逻辑都不对  你都a=b 了  然后又算a%b 肯定为0啊  输出的应该是b的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 15:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表