欧几里得算法求解最大公因数(gcd)正确性的证明
欧几里得算法求解最大公因数(gcd)正确性的证明
欧几里得算法是求解最大公因数(gcd)的简单且高效的算法。它的求解方法是以下的一个递归式:
(注意:上式规定 ,以方便讨论。由于 ,这样规定也不会使这个式子失去一般性。如果想计算诸如 之类的值,只要用上式计算 即可。)
举个例子:。
我们可以先分析一下这个递归式:第一种情况,当 时,有 ,这是很显然的。因为任何数都是 的因数,又因为 是它本身最大的因数。我们不妨把这个情况当作“基本情况”,而第二个式子就是要把非一般的情况,转化为我们所知的、容易计算的基本情况。而这篇文章,主要就是证明第二种情况的式子为什么成立,即证明 。
要证明这个式子正确,我们先证明一个命题:设 与 的公因数所构成的集合为 , 与 的公因数构成的集合为 ,则 。换句话说,就是要证明所有 与 的公因数,都是 与 的公因数(即 );反过来,所有 与 的公因数,也都是 与 的公因数(即 )。证明了这个命题之后,既然 与 相等,那么它们中最大的那个元素当然也就相等了。而 与 中的最大元素,不就分别是 和 吗!
虽然我们把原先要证明的命题扩大了:原本只需证明 与 的最大公因数,等于 与 的最大公因数;现在要证明 与 的所有公因数,等于 与 的所有公因数。但是由于去掉了“最大”的特殊条件,要证明起来反而更容易。
具体怎么证明呢?
设 是 和 的一个公因数,且 , ,要证明的就是 (注:“” 符号表示整除, 就表示 是 的因数)。从 运算的定义出发,若 ,其中 是满足 的最大正整数,则 。
把 , 代入,就得到 ,所以显然 。上命题得证。用几个具体的数验证一下,设 . ,则 ,,,确实 。
综上,欧几里得算法的正确性证毕。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】