鱼C论坛

 找回密码
 立即注册
查看: 968|回复: 5

[已解决]欧几里得算法

[复制链接]
发表于 2020-6-21 10:18:03 | 显示全部楼层 |阅读模式

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

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

x
def gcd(x, y):
    while y:
        t = x % y
        x = y
        y = t

    return x
   
print(gcd(4, 6))

我知道我的想法肯定有错,但是我不知道正确的思路是什么,求大神指点!

下面是我看了这个代码的思路(以4,6为例)

y循环开始

t是x除以y的余数,所以t=4

x=y,所以这里是x=6?

y=t,所以y=4?

最后返回x。。。。。?



这只是我的理解,本来while循环搞得迷迷糊糊的,这整得我更晕了,原谅本垃圾吧。
最佳答案
2020-6-21 10:24:18
while y是while y != 0的意思。
给你分析下代码过程:
t = x % y,t = 4
x = y,  x = 6
y = t, y = 4
y不为0,继续
t = x % y, t = 2
x = y, x = 4
y = t, y = 2
y不为0,继续
t = x % y, t = 0
x = y, x = 2
y = t, y= 0
此时y为0,退出循环,返回x,
x当前值为2,所以结果为2.

评分

参与人数 1鱼币 +2 收起 理由
runeun + 2

查看全部评分

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

使用道具 举报

发表于 2020-6-21 10:22:11 | 显示全部楼层
代码没问题啊,4 和 6 的最大公因数不是 2 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-21 10:23:25 | 显示全部楼层
本帖最后由 今天的我更强了 于 2020-6-21 10:25 编辑

while y 的意思是判断是否循环的条件,y只要非零就是代表true,就会进入循环,gcd(4,6)t=4%6=4,x=6,y=4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-21 10:24:18 | 显示全部楼层    本楼为最佳答案   
while y是while y != 0的意思。
给你分析下代码过程:
t = x % y,t = 4
x = y,  x = 6
y = t, y = 4
y不为0,继续
t = x % y, t = 2
x = y, x = 4
y = t, y = 2
y不为0,继续
t = x % y, t = 0
x = y, x = 2
y = t, y= 0
此时y为0,退出循环,返回x,
x当前值为2,所以结果为2.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-21 10:25:24 | 显示全部楼层
今天的我更强了 发表于 2020-6-21 10:23
while y 的意思是判断是否循环的条件,y只要非零就是代表true,就会进入循环,gcd(4,6)不太对吧,4小于6 ...

都一样的,gcd(6,4)和gcd(4,6)一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-21 10:26:16 | 显示全部楼层
qiuyouzhi 发表于 2020-6-21 10:25
都一样的,gcd(6,4)和gcd(4,6)一样

嗯嗯,我运行了一下 确实一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 13:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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