|
发表于 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。
不知道你是否看懂!我就是看这个式子写出来的代码,希望对你有用!
|
|