17课后题
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。
在百度上看到一个代码不是很懂,小甲鱼的答案我懂,我也是那样写的。
百度上:
def gcd(a,b):
while a != 0:
a,b=b%a,a
return b
这个代码有人能实现,但是不是很理解a,b=b%a,a 难道不应该是a,b=a%b, a吗??? 本帖最后由 baige 于 2020-8-6 22:06 编辑
欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。
换成这上面说的就是下面这个程序
a是较大的值,b是较小的值
def gcd(a,b):
while b != 0:
a,b=b,a%b
return a
然后你上面的程序就是把gcd()里面参数的位置换了一下
也就是你上面的程序b较大的值,a是较小的值
详情请看https://fishc.com.cn/forum.php?mod=viewthread&tid=126144&highlight=17%BD%B2
页:
[1]