鱼C论坛

 找回密码
 立即注册
查看: 3075|回复: 6

[已解决]python 零基础入门 17讲课后习题1.

[复制链接]
发表于 2017-11-25 16:41:56 | 显示全部楼层 |阅读模式

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

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

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

    return x
   
print(gcd(4, 6))


这段参考答案没看懂,求解释
最佳答案
2017-11-25 17:20:33
像番茄加两个蛋 发表于 2017-11-25 16:55
我也是今天刚刚学17课
这是我自己写的代码比甲老师的代码更好理解:
a和b为2个数,当a和b的余数不等于0的 ...

对不起,之前发错了一个代码,现在对了,你看看是不是这样子的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-25 16:55:46 | 显示全部楼层
本帖最后由 像番茄加两个蛋 于 2017-11-25 17:19 编辑

我也是今天刚刚学17课
这是我自己写的代码比甲老师的代码更好理解:
  1. def gcd(a,b):
  2.     while a%b != 0:
  3.         a,b=b,a % b
  4.         if a%b == 0:
  5.             print(b)
复制代码

a和b为2个数,当a和b的余数不等于0的时候开始循环,a=b,b=a%b,这个%你应该知道是什么意思吧?就是余数!然后如果a%b余数等于0的时候就打印b,原理在后面:辗转相除法
辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
不知道你是否看懂!我就是看这个式子写出来的代码,希望对你有用!


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

使用道具 举报

发表于 2017-11-25 17:11:47 From FishC Mobile | 显示全部楼层
百度一下辗转相除法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-25 17:20:33 | 显示全部楼层    本楼为最佳答案   
像番茄加两个蛋 发表于 2017-11-25 16:55
我也是今天刚刚学17课
这是我自己写的代码比甲老师的代码更好理解:
a和b为2个数,当a和b的余数不等于0的 ...

对不起,之前发错了一个代码,现在对了,你看看是不是这样子的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 17:52:03 | 显示全部楼层
主要是不懂这个是怎么循环结束的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-26 13:15:22 | 显示全部楼层
非零的数字为True,0为False,当循环到y = 0的时候,循环就结束了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-27 21:25:47 | 显示全部楼层
我还没学到这里啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 17:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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