木四 发表于 2017-11-25 16:41:56

python 零基础入门 17讲课后习题1.

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

    return x
   
print(gcd(4, 6))


这段参考答案没看懂,求解释

像番茄加两个蛋 发表于 2017-11-25 16:55:46

本帖最后由 像番茄加两个蛋 于 2017-11-25 17:19 编辑

我也是今天刚刚学17课
这是我自己写的代码比甲老师的代码更好理解:def gcd(a,b):
    while a%b != 0:
      a,b=b,a % b
      if a%b == 0:
            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。
不知道你是否看懂!我就是看这个式子写出来的代码,希望对你有用!


BngThea 发表于 2017-11-25 17:11:47

百度一下辗转相除法

像番茄加两个蛋 发表于 2017-11-25 17:20:33

像番茄加两个蛋 发表于 2017-11-25 16:55
我也是今天刚刚学17课
这是我自己写的代码比甲老师的代码更好理解:
a和b为2个数,当a和b的余数不等于0的 ...

对不起,之前发错了一个代码,现在对了,你看看是不是这样子的?{:5_91:}

木四 发表于 2017-11-25 17:52:03

主要是不懂这个是怎么循环结束的

Bill888 发表于 2017-11-26 13:15:22

非零的数字为True,0为False,当循环到y = 0的时候,循环就结束了

bing_home 发表于 2017-11-27 21:25:47

我还没学到这里啊
页: [1]
查看完整版本: python 零基础入门 17讲课后习题1.