鱼C论坛

 找回密码
 立即注册
查看: 2434|回复: 8

[已解决]求助,请问为什么输出的结果总是1?

[复制链接]
发表于 2020-8-22 12:05:11 | 显示全部楼层 |阅读模式

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

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

x
  1. def gcd(x,y):
  2.     if x > y:
  3.         pass
  4.     else:
  5.         x,y = y,x
  6.     r = x % y
  7.     if r == 0:
  8.         print (y)
  9.     else:
  10.         while r != 0:
  11.             x = r; r = y % r
  12.             if r == 0:
  13.                 break
  14.             else:
  15.                 r = x % r
  16.         print(x)
  17. gcd(47,7)
复制代码

最佳答案
2020-8-22 12:10:03
47和7的最大因数是1啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-22 12:06:24 | 显示全部楼层
第一个if用来确定大/小的余数,然后第二个if用来判断余数是否为0,为0就显示小的,否则开始辗转相除,结果输出都是1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-22 12:10:03 | 显示全部楼层    本楼为最佳答案   
47和7的最大因数是1啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-22 12:10:59 | 显示全部楼层
cloudfox 发表于 2020-8-22 12:06
第一个if用来确定大/小的余数,然后第二个if用来判断余数是否为0,为0就显示小的,否则开始辗转相除{:10_28 ...


你换成49和7
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-22 12:19:46 | 显示全部楼层
1q23w31 发表于 2020-8-22 12:10
47和7的最大因数是1啊

突然窒息
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-22 12:23:09 | 显示全部楼层

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-22 12:23:45 | 显示全部楼层
第一,并不是输出结果一直为1,是因为你输入的是47和7,这俩数的最大公约数就是1
第二,你的程序在逻辑上是不对的。一开始是x对y求余,后面又变成了y对x求余,而却y一直没有变过。这样出来的结果是不对的。例如:gcd(16,28)输出的结果是12
正确的程序如下:
  1. def gcd(x,y):
  2.     if x <y:
  3.         x,y = y,x
  4.     r = x % y
  5.     while r != 0:
  6.         x = y
  7.         y = r
  8.         r = x % y
  9.     print(y)
复制代码

其实,根本不用判断x和y的大小,直接辗转相除就可以了,最多是多除一次
  1. def gcd(x, y):
  2.     while y != 0:
  3.         c = x % y
  4.         x = y
  5.         y = c
  6.     print(x)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-22 12:31:46 | 显示全部楼层
sunrise085 发表于 2020-8-22 12:23
第一,并不是输出结果一直为1,是因为你输入的是47和7,这俩数的最大公约数就是1
第二,你的程序在逻辑上 ...

谢谢!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-22 12:32:45 | 显示全部楼层

你这最佳选的有点快了啊。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 08:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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