鱼C论坛

 找回密码
 立即注册
查看: 940|回复: 2

[已解决]17课后题

[复制链接]
发表于 2020-8-6 21:46:42 | 显示全部楼层 |阅读模式

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

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

x

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吗???
最佳答案
2020-8-6 21:49:47
本帖最后由 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是较小的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-6 21:49:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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是较小的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-6 22:16:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 14:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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