Python求最大公约数:几种实现方式全解析

这篇具有很好参考价值的文章主要介绍了Python求最大公约数:几种实现方式全解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python求最大公约数:几种实现方式全解析

在编写 Python 程序中,经常需要求取两个或多个数的最大公约数。求最大公约数是一道基础算法题,也是许多高级算法的基础。Python 作为一门通用编程语言,提供了多种求最大公约数的实现方式。本文将介绍几种 Python 求最大公约数的方法,包括辗转相除法、更相减损法、欧几里得算法(辗转相减法)、Euclid 扩展算法等。

辗转相除法

辗转相除法又称为欧几里得算法(Euclidean Algorithm)。该算法基于一个定理:两个整数的最大公约数等于其中较小的数与两数相除余数的最大公约数。用公式表达为:gcd(a, b) = gcd(b, a mod b)

例如,求取 60 和 24 的最大公约数:

gcd(60, 24) = gcd(24, 12) = gcd(12, 0) = 12

代码实现:

def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)

更相减损法

更相减损法是古代中国数学家采用的一种求最大公约数的方法。该算法基于一个结论:两个正整数的最大公约数等于它们的差值的最大公约数。用公式表达为:gcd(a, b) = gcd(|a-b|, min(a,b))

例如,求取 60 和 24 的最大公约数:

gcd(60,24) = gcd(60-24, 24) = gcd(36, 24)
gcd(36,24) = gcd(36-24, 24) = gcd(12, 24)
gcd(12,24) = gcd(24-12, 12) = gcd(12, 12)文章来源地址https://www.toymoban.com/news/detail-460506.html

到了这里,关于Python求最大公约数:几种实现方式全解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全定制FPGA硬件电路设计实现最大公约数求取算法(Quartus II)

    目录 一、设计需求 二、设计工具及版本 三、设计原理及结构方案 四、电路设计描述 1. 32位D触发器 2. 32位多路选择器 3. 32位减法器 4. 32位求余电路 5. GCDOUT信号产生电路 6. DONE_L信号产生电路 五、仿真激励设计方案及电路仿真结构 六、设计总结 当前,FPGA设计在很多场合得到

    2024年02月20日
    浏览(49)
  • 【约数】求最大公约数——递归

    请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。 G C D ( n , m ) = { = m , 当 m = n 且 n m o d m = 0 = G C D ( m , n ) , 当 n m 时 = G C D ( m , n m o d    m ) , 其他 GCD(n,m)=left{begin{matrix} =m,当 m=n 且 n mod m =0\\\\ =GCD(m,n),当nm时\\\\ =GCD(m,n mod m),其他 end{matrix}right. GC D ( n , m ) = ⎩ ⎨ ⎧ ​ = m

    2024年02月03日
    浏览(43)
  • 最大公约数的四种方法

    求两数的最大公约数,一共有四种方法:暴力穷举法、更相减损法、辗转相除法、stein 算法,小女不才,花了几天的时间终于把这几种方法全部弄明白,现在就把它们全部分享出来。 首先,假设被求的两个数为 x、y,且 x y。最大公约数 d = gcd (x , y) 正如名字所说,暴击穷举法

    2024年02月05日
    浏览(73)
  • 辗转相除法求最大公约数

    辗转相除法也被称为欧几里得算法,是求两个整数的最大公约数(GCD)的一种常用方法。 辗转相除法的原理是基于两个整数的最大公约数与它们的余数的最大公约数相等的性质。具体步骤如下: 用较大的数除以较小的数,得到一个商和余数。 如果余数为0,则较小的数即为最

    2024年02月05日
    浏览(66)
  • 最大公约数和最小公倍数问题

    等差数列 蓝桥杯192 gcd问题 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项? 思路:求出每一项之差的最大公约数,以这个

    2023年04月09日
    浏览(41)
  • C++ 最大公约数与最小公倍数

    (一)简单的两个正整数  求 最大公约数 (引入专题) 思路: 根据 “欧几里得算法”  ,即 “辗转相除法” 原理如下: 题意: 求出   a  , b  两个正整数的最大公约数 设  k = a / b,   r = a % b 即    a = k * b + r 又设  d  为 a 和 b 的一个公约数 那么由  r = a - k * b,  可

    2024年02月06日
    浏览(48)
  • 【算法】辗转相除法求最大公约数

    辗转相除法 ,又称 欧几里德算法(Euclidean Algorithm) ,是求两个数的 最大公约数(greatest common divisor) 的一种方法。用较大的数除以较小的数,再以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。 求30和18的最大公约数: 30 /  18  = 1 余  12 18 

    2024年02月14日
    浏览(56)
  • 辗转相除法——求最大公约数(易懂详解)

    定义 最大公因数:也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。 辗转相除法:欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 举例理解 比如现在要

    2024年02月16日
    浏览(42)
  • 【ARM汇编】如何用汇编求最大公约数?

    CSDN话题挑战赛第1期 活动详情地址 :话题PK赛 参赛话题 :汇编知识分享 话题描述 :我们的计算机知识就像一座金字塔,底层是数学,上面是数字电路,然后是汇编,再往上是操作系统、网络、数据库、高级编程语言、框架等等…我们不可能精通这个金子塔的每一层, 但是

    2024年01月25日
    浏览(48)
  • C语言—最大公约数和最小公倍数

    作者主页: paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者: 大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于 《算法详解》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将算法基础知识一网打尽,希望

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包