鱼C论坛

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

[已解决]第17讲的 最大公约数

[复制链接]
发表于 2018-12-10 17:26:34 | 显示全部楼层 |阅读模式

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

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

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

    return x
   
print(gcd(4, 6))



为什么这里不用判断x  y的大小。
测试的时候x%y 只能大的在前 小的在后
最佳答案
2018-12-10 17:31:53

  1. def gcd(x, y):
  2.     while y:     #y不为零时,开始循环;
  3.         t = x % y  #一次循环,t =53 % 17 ,余数为2, t = 2;二次循环, t = 17/%2 = 1;三次循环,t = 2% 1 = 0;
  4.         x = y        #一次循环,x = 17 ;二次循环,x = 2;三次循环 x = 1
  5.         y = t        # 一次循环,y = 2 ; 二次循环 ,y = 1;三次循环 y = 0;跳出当前循环;
  6.     return x          #返回x的值为17;返回x = 2 ;返回x的值为 1;
  7. print(gcd(53, 17))                打印当前的值,也就是返回的X值,为1;
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-12-10 17:31:53 | 显示全部楼层    本楼为最佳答案   

  1. def gcd(x, y):
  2.     while y:     #y不为零时,开始循环;
  3.         t = x % y  #一次循环,t =53 % 17 ,余数为2, t = 2;二次循环, t = 17/%2 = 1;三次循环,t = 2% 1 = 0;
  4.         x = y        #一次循环,x = 17 ;二次循环,x = 2;三次循环 x = 1
  5.         y = t        # 一次循环,y = 2 ; 二次循环 ,y = 1;三次循环 y = 0;跳出当前循环;
  6.     return x          #返回x的值为17;返回x = 2 ;返回x的值为 1;
  7. print(gcd(53, 17))                打印当前的值,也就是返回的X值,为1;
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 17:32:34 | 显示全部楼层
看不明白的话,可以看我这个帖。

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

使用道具 举报

发表于 2018-12-10 17:40:31 | 显示全部楼层
谁大谁小没关系,下次就换顺序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 17:44:56 | 显示全部楼层
如果 x<y
t = x %y =>t =x;
x = y      => x =y
y = t       => y =x
一次循环后x和y的值就会互换了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 17:47:06 | 显示全部楼层
其实代码看懂了。但是就是不懂为什么这个函数里不用区分x y的大小
你的例子是 x=53  y=17
t=53%17=2
t=17%2=1
几次循环下来
t=2%1=0
得到公约数为1

那么假如 x=17  y=53
那么  t=17%53 得到的是t=17
再次循环 t=53%17  就回到和x=53  y=17一样了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 08:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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