鱼C论坛

 找回密码
 立即注册
查看: 1842|回复: 1

关于小甲鱼的第17视频的作业最大公约数的问题

[复制链接]
发表于 2016-10-6 18:27:41 | 显示全部楼层 |阅读模式
2鱼币

  1. def gcd(x, y):
  2.     while y:
  3.         t = x % y
  4.         x = y
  5.         y = t

  6.     return x
  7.    
  8. print(gcd(4, 6))
复制代码


总感觉值返回y啊 跟t 和x没啥关系啊  是不是答案有点问题?

最佳答案

查看完整内容

先了解如何取最大公约数,然后在看代码 while y: # y是条件 t = x % y #是取余数 x = y # 把y值在赋给x y = t # 把t的值再赋给y 把y作为条件,新的(x,y)再带入while循环,继续运算, 如此反复,直到t = x % y =0,这个时候因为 y = t,while停止,return x (实际上是上一轮的x) 举例: 求(x=21 ,y=18)的最大公约数 第一次循环:t = 21%18 =3 ,然后,重新赋值 x = y =18,y = t =3;( ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-6 18:27:42 | 显示全部楼层
本帖最后由 人zai旅途 于 2016-10-6 23:24 编辑

先了解如何取最大公约数,然后在看代码
while y:    #  y是条件
t = x % y  #是取余数
x = y        # 把y值在赋给x
y = t         # 把t的值再赋给y
           把y作为条件,新的(x,y)再带入while循环,继续运算,
如此反复,直到t = x % y =0,这个时候因为 y = t,while停止,return x (实际上是上一轮的x)

举例:
求(x=21 ,y=18)的最大公约数
第一次循环:t = 21%18 =3  ,然后,重新赋值 x = y =18,y = t =3;(18,3)作为第二次循环的起点
第二次循环:t = 18%3 =0,while条件不成立,return x 这个时候x=3
3是最大公约数。

楼主看看,能否明白,如果觉得可以的话,设个最佳答案吧


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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