鱼C论坛

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

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

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

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

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

x
def gcd(x,y):
    if x > y:
        pass
    else:
        x,y = y,x
    r = x % y
    if r == 0:
        print (y)
    else:
        while r != 0:
            x = r; r = y % r
            if r == 0:
                break
            else:
                r = x % r
        print(x)
gcd(47,7)
最佳答案
2020-8-22 12:10:03
47和7的最大因数是1啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2020-8-22 12:10:03 | 显示全部楼层    本楼为最佳答案   
47和7的最大因数是1啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


你换成49和7
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

突然窒息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 2020-8-22 12:23:45 | 显示全部楼层
第一,并不是输出结果一直为1,是因为你输入的是47和7,这俩数的最大公约数就是1
第二,你的程序在逻辑上是不对的。一开始是x对y求余,后面又变成了y对x求余,而却y一直没有变过。这样出来的结果是不对的。例如:gcd(16,28)输出的结果是12
正确的程序如下:
def gcd(x,y):
    if x <y:
        x,y = y,x
    r = x % y
    while r != 0:
        x = y
        y = r
        r = x % y
    print(y)
其实,根本不用判断x和y的大小,直接辗转相除就可以了,最多是多除一次
def gcd(x, y):
    while y != 0:
        c = x % y
        x = y
        y = c
    print(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

你这最佳选的有点快了啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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