当前位置: 首页 > news >正文

辗转相除法(欧几里得算法)的证明

欢迎访问我的主页: https://heeheeaii.github.io/

辗转相除法是一种用于计算两个非负整数最大公约数的有效算法。它的证明主要分为两个部分:

  • 证明核心引理: gcd(a,b)=gcd(b,amodb)
  • 证明算法的收敛性: 证明算法一定会在有限步内结束。

辗转相除法简介

在开始证明之前,先回顾一下辗转相除法的步骤。对于任意两个正整数 a 和 b (不妨设 a>b):

  1. 用 a 除以 b,得到商 q 和余数 r。即 a=qb+r,其中 0≤r<b。
  2. 如果余数 r 为 0,那么 b 就是 a 和 b 的最大公约数。
  3. 如果余数 r 不为 0,则将原来的除数 b 作为新的被除数,将余数 r 作为新的除数,重复第一步。

如此循环,直到余数为 0。此时,最后一次计算中的除数就是原始 a 和 b 的最大公约数。

引理: 设 a,b 为两个正整数,且 a=qb+r(其中 q 为商, r 为余数,0≤r<b),那么 a 和 b 的最大公约数等于 b 和 r 的最大公约数。即:gcd(a,b)=gcd(b,r)。

证明过程:

为了证明这个等式,只需要证明 (a,b) 的公约数集合与 (b,r) 的公约数集合是完全相同的。如果两个集合完全相同,那么它们各自的最大元素(即最大公约数)也必然相等。

1. 证明:任何 (a,b) 的公约数 d,也一定是 (b,r) 的公约数。

假设 d 是 a 和 b 的一个任意公约数。根据公约数的定义,有 d∣a 和 d∣b。(这里的 ∣ 表示“整除”)。

因为 d 能整除 a 和 b,所以 d 也能整除它们的任意线性组合。将算法中的等式 a=qb+r 变形为 r=a−qb。因为 d∣a 且 d∣b,所以 d 必然能整除 a−qb。因此,得到 d∣r。

既然已知 d∣b 且证明了 d∣r,那么 d 就是 b 和 r 的一个公约数。

2. 证明:任何 (b,r) 的公约数 d′,也一定是 (a,b) 的公约数。

假设 d′ 是 b 和 r 的一个任意公约数。根据定义,有 d′∣b 和 d′∣r。

因为 d′ 能整除 b 和 r,所以 d′ 也能整除它们的任意线性组合。从算法等式 a=qb+r 中,可以看到 a 正是 b 和 r 的一个线性组合。因为 d′∣b(所以 d′∣qb)且 d′∣r,所以 d′ 必然能整除 qb+r。因此,得到 d′∣a。

既然已知 d′∣b 且证明了 d′∣a,那么 d′ 就是 a 和 b 的一个公约数。

1. 算法为什么一定会终止?

在辗转相除法的每一步中,都有一个等式: ri−1=qi⋅ri+ri+1

其中 ri−1 是被除数,ri 是除数,ri+1 是余数。根据整数除法的性质,余数必须严格小于除数,且不能为负数。所以得到一个余数序列: b>r1>r2>r3>⋯>rn≥0

这是一个由非负整数组成的严格递减序列。任何由非负整数组成的严格递减序列最终必然会达到 0。因此,算法一定会在有限步内终止,即一定会出现某一步的余数 rn+1=0。

2. 为什么余数为 0 时,当时的除数就是最大公约数?

根据核心引理,可以将求 gcd(a,b) 的过程转化为一个链条: gcd(a,b)=gcd(b,r1)=gcd(r1,r2)=⋯=gcd(rn−1,rn)

当算法进行到最后一步时,余数为 0。假设这一步的表达式为: rn−1=qn+1⋅rn+0

这表示 rn 能够整除 rn−1。那么,需要求解的就是 gcd(rn−1,rn)。根据最大公约数的定义,一个数 (rn−1) 和它的约数 (rn) 的最大公约数就是那个约数本身 (rn)。 所以,gcd(rn−1,rn)=rn。

将这个结果代入上面的等式链条,得到: gcd(a,b)=gcd(rn−1,rn)=rn

这里的 rn 正是算法终止前的最后一个非零余数,也就是最后一步计算中的除数。

举例说明:

用 gcd(1071,462) 来演示这个过程:

  • 1071=2⋅462+147 根据引理:gcd(1071,462)=gcd(462,147)
  • 462=3⋅147+21 根据引理:gcd(462,147)=gcd(147,21)
  • 147=7⋅21+0 根据引理:gcd(147,21)=gcd(21,0) 此时余数为 0,算法终止。最后一步的除数是 21。

把整个链条连起来: gcd(1071,462)=gcd(462,147)=gcd(147,21)=21

所以,1071 和 462 的最大公约数是 21。


文章转载自:

http://osdHWz0H.hLppp.cn
http://iW45oSRA.hLppp.cn
http://4gIbnCGu.hLppp.cn
http://mm2neLEV.hLppp.cn
http://IPCK32yf.hLppp.cn
http://dVevBILt.hLppp.cn
http://ISdzi7kt.hLppp.cn
http://hXRoP87A.hLppp.cn
http://YxptLGBf.hLppp.cn
http://dMnrFG6K.hLppp.cn
http://6e6Yljka.hLppp.cn
http://ugmqAsxS.hLppp.cn
http://4xsP4Jk3.hLppp.cn
http://Nifs1JIN.hLppp.cn
http://fnkNkBSl.hLppp.cn
http://WWfwQhYu.hLppp.cn
http://Guxj15cM.hLppp.cn
http://iKtxWTU8.hLppp.cn
http://9Tsmqggb.hLppp.cn
http://oVrau5Xw.hLppp.cn
http://2TIwmNfC.hLppp.cn
http://KNbHUksE.hLppp.cn
http://jUecH2sa.hLppp.cn
http://nU1I5l2R.hLppp.cn
http://OVecct1S.hLppp.cn
http://5vO1l5m7.hLppp.cn
http://ylMqzh93.hLppp.cn
http://BNuPa9iT.hLppp.cn
http://lF0MEWxY.hLppp.cn
http://viCzRKvz.hLppp.cn
http://www.dtcms.com/a/369023.html

相关文章:

  • 【MySQL索引设计实战:从入门到精通的高性能索引】
  • 《嵌入式硬件(三):串口通信》
  • python库 Py2exe 的详细使用(将 Python 脚本变为Windows独立软件包)
  • 激光雷达与IMU时间硬件同步与软件同步区分
  • 《基于stm32的智慧家居基础项目》
  • Docker在Windows与Linux系统安装的一体化教学设计
  • sub3G和sub6G的区别和联系
  • 【存储选型终极指南】RustFS vs MinIO:5大维度深度对决,95%技术团队的选择秘密!
  • 【Python基础】 18 Rust 与 Python print 函数完整对比笔记
  • Rust Axum 快速上手指南(静态网页和动态网页2024版)
  • CVPR 2025|无类别词汇的视觉-语言模型少样本学习
  • 9月14日 不见不散|2025年华望M-Design v2软件线上发布会
  • 疯狂星期四文案网第61天运营日记
  • 还在堆模型、拼算力?醒醒吧!你的AI项目99%会死于数据
  • DL3382P6平替RClamp3382P.TCT
  • 硬件基础:串口通信
  • 华为在国内搞的研发基地有多野?标杆游学带你解锁“研发界顶流”
  • LangChain关于提示词的几种写法
  • openharmony之AV_CodeC音视频编解码模块详解(二)
  • 【明道云】[工作表控件9] 子表控件:一对多数据建模实战指南
  • Linux/UNIX系统编程手册笔记:DAEMON、编写安全的特权程序、能力、登录记账
  • Docker部署PanSou 一款开源网盘搜索项目,集成前后端,一键部署
  • 【服务器】英伟达M40显卡风冷方案心得
  • Process Explorer 学习笔记(第三章3.3.1):DLL和句柄
  • 解锁无限创意:Tldraw+cpolar如何通过内网穿透技术打破空间限制
  • 安全沙箱配置针对海外vps容器隔离的验证方法
  • SQL-DML
  • 数据库原理及应用_数据库基础_第4章关系模型的基本理论_触发器
  • RWA点亮新能源的数字未来
  • css margin外边距重叠/塌陷问题