惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
I
InfoQ
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog
博客园_首页
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
C
Check Point Blog
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Engineering at Meta
Engineering at Meta
B
Blog
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
F
Fortinet All Blogs
月光博客
月光博客
GbyAI
GbyAI

Lanke

Google 账号地区是日本,ChatGPT 订阅为什么还是美元? 在 Flutter 项目里折腾苹果的液态玻璃效果 从“宅斗庶女”看极端女权 一期一会 关于梦 用 Vercel AI Gateway 给博客做一个 AI 摘要服务 Claude 搜索网页报错:Unable to verify if domain is safe to fetch 的解决方法 Flutter输入面板布局优化:键盘、表情面板与@联想的丝滑切换 再谈语言和思维 还有人记得 在2026年拥有自己的博客 为 Astro 博客添加 llms.txt 使用 LLM Wiki 作为 Hermes Agent 的记忆系统 使用Obsidian 作为 Hermes Agent 的记忆数据库 流畅的下滑关闭页面 遇到的一起生产事故 好看的鼠标样式 拖了很久的更新,还是来了 Linux · 常用日志查询命令 面试 · Java面试二 面试 · Java面试一 如何实现验证码及校验 在电脑上共存MySQL 三道前端题 「随便来点」失语症 一些碰到的面试问题 关于博客主题的自问自答 重装电脑后恢复MySQL数据 如何畅玩旮旯game之软件篇--串流 欢迎来到实力至上主义教室
辗转相除法求最大公约数
Lanke · 2024-12-23 · via Lanke

辗转相除法求最大公约数

记录一下学到的快速求最大公约数的办法

原理

辗转相除法,也叫欧几里得算法,是用于求两个正整数的最大公约数的一种高效算法。它基于这样一个原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。

实现

直接粘代码吧

python

def func(m, n):
    while n:
        m, n = n, m % n
    return m

具体解释如下:

  1. 函数定义

    定义了一个名为 func 的函数,接受两个参数 mn,这两个参数用于传入需要计算最大公约数的两个数。

  2. 循环部分

    python

    while n:
        m, n = n, m % n

    这是一个 while 循环,只要 n 不为 0,就会一直执行循环体。在循环体中,通过语句 m, n = n, m % n 实现了辗转相除的核心操作。它将 n 的值赋给 m,将 m 除以 n 的余数赋给 n。这样每次循环都在更新 mn 的值,逐步逼近最大公约数。

  3. 返回结果

    n 最终变为 0 时,循环结束,此时的 m 就是 mn 最初传入值的最大公约数,将其返回。

  4. 调用函数并输出结果

    python

    m = 72
    n = 36
    print(f"{m}{n} 的最大公约数是: {func(m, n)}")

    定义了两个变量 mn,分别赋值为 72 和 36,然后调用 func 函数计算它们的最大公约数,并使用格式化字符串输出结果。

在这个例子中,计算过程如下:

  • 初始 m = 72n = 36
  • 第一次循环:m = 36n = 72 % 36 = 0
  • 此时 n 为 0,循环结束,函数返回 m 的值 36,所以 72 和 36 的最大公约数是 36。

文章标题:辗转相除法求最大公约数

文章作者:Lanke

文章链接:https://blog.blueke.top/posts/582995[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。