鱼C论坛

 找回密码
 立即注册
查看: 1800|回复: 7

[已解决]欧几里算法的提问

[复制链接]
发表于 2017-10-27 18:39:26 | 显示全部楼层 |阅读模式

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

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

x
def gcd(x, y):
    while y:
        t = x % y
        x = y
        y = t
    return x
1.想问一下这里面的return x 是什么意思,为什么一定要返回到x上?
2.这个算法不应该是先用较大的数除以较小的数吗,答案里是怎么体现的?
最佳答案
2017-10-27 20:26:09
本帖最后由 wuxiang751 于 2017-10-27 20:32 编辑

我也是刚学到这,看到甲鱼老师给的答案我表示很兴奋。while循环中,当条件为FALSE的时候循环停止,我记得之前有一道课后题是问,有哪些值能够返回FALSE,其中就有,0,NONE等等(还有什么我忘记了,不多就几个)。这里就是当X为0的时候,循环结束,所以用"while x:"。然后,后边的直接用X % Y ,不用比较大小,也是很具有智慧的。你看,如果x < y ,12 % 13 ,余数不就是12吗,这个时候 X=Y,X的值为13;Y = 余数 ,Y的值不就是12了吗,较大的数不就赋值给X了吗。
所以啊,这就是高手和菜鸟的区别,学习了,希望你懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-27 19:06:28 | 显示全部楼层
以x = 6和y = 4为例,
第一次6 % 4, x = 4, y = 2
第二次4 % 2, x = 2, y = 0
退出循环
返回的是x
如果y比x大,则第一次循环会交换两个数,如
x = 4, y = 6
4 % 6, x = 6, y = 4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-27 19:55:27 | 显示全部楼层
冬雪雪冬 发表于 2017-10-27 19:06
以x = 6和y = 4为例,
第一次6 % 4, x = 4, y = 2
第二次4 % 2, x = 2, y = 0

在while循环中,while y表示的是在什么条件下退出循环呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-27 19:57:49 | 显示全部楼层
冬雪雪冬 发表于 2017-10-27 19:06
以x = 6和y = 4为例,
第一次6 % 4, x = 4, y = 2
第二次4 % 2, x = 2, y = 0

如果y比x大,那是怎么通过t=x%y来实现对换的呀?求解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-27 20:22:18 | 显示全部楼层
卖糖葫芦的大婶 发表于 2017-10-27 19:55
在while循环中,while y表示的是在什么条件下退出循环呢?

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

使用道具 举报

发表于 2017-10-27 20:24:19 | 显示全部楼层
卖糖葫芦的大婶 发表于 2017-10-27 19:57
如果y比x大,那是怎么通过t=x%y来实现对换的呀?求解释

如果y比x大,t = x % y = x, x = y, y = t = x
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-27 20:26:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wuxiang751 于 2017-10-27 20:32 编辑

我也是刚学到这,看到甲鱼老师给的答案我表示很兴奋。while循环中,当条件为FALSE的时候循环停止,我记得之前有一道课后题是问,有哪些值能够返回FALSE,其中就有,0,NONE等等(还有什么我忘记了,不多就几个)。这里就是当X为0的时候,循环结束,所以用"while x:"。然后,后边的直接用X % Y ,不用比较大小,也是很具有智慧的。你看,如果x < y ,12 % 13 ,余数不就是12吗,这个时候 X=Y,X的值为13;Y = 余数 ,Y的值不就是12了吗,较大的数不就赋值给X了吗。
所以啊,这就是高手和菜鸟的区别,学习了,希望你懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-27 20:33:55 | 显示全部楼层
wuxiang751 发表于 2017-10-27 20:26
我也是刚学到这,看到甲鱼老师给的答案我表示很兴奋。while循环中,当条件为FALSE的时候循环停止,我记得之 ...

不好意思,是while y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 19:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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