欧几里德算法的证明
欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b) = gcd(b,a mod b) (a>b 且a mod b 不为0)
证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a,d|b,而r = a - kb,因此d|r
因此d也是(b,a mod b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证
【来自百度百科】上述“d|a,d|b,而r = a - kb,因此d|r”这一步的证明:
d|a,d|b则有如下两点:
a/d=n、b/d=m。其中n、m是整数。则(xa+yb)/d=nx+my.也即:d|(xa+yb)。其中x、y是整数。
证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a,d|b,而r = a - kb,因此d|r
因此d也是(b,a mod b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证
【来自百度百科】上述“d|a,d|b,而r = a - kb,因此d|r”这一步的证明:
d|a,d|b则有如下两点:
a/d=n、b/d=m。其中n、m是整数。则(xa+yb)/d=nx+my.也即:d|(xa+yb)。其中x、y是整数。
------------------分割线----------分割线------------分割线----------分割线-----------------------
下面是另一个证明过程,同样是出自百度百科。
设两数为a、b(a>b),用gcd(a,b)表示a,b的最大公约数,r=a mod b , 是a除以b的余数,k为a除以b的商,即a÷b=k.......r。
辗转相除法即是要证明gcd(a,b)=gcd(b,r)。
证明过程如下:
第一步:令c=gcd(a,b)≠0,则设a=mc,b=nc。 (注意:因为a与b的最大公约数是c,所以m与n必然互质。)
第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c
第三步:根据第二步结果可知c也是r的因数
第四步:可以断定m-kn与n互质,因此c也是b与r的最大公约数。
(关于“m-kn与n互质”的断定,可以用反证法来证明:假设“m-kn与n不互质”,则有m-kn=xd,n=yd (d>1),于是m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)cd,b=nc=ycd,则a与b的一个公约数cd>c,故c非a与b的最大公约数,与前面假设c=gcd(a,b)互相矛盾,所以“m-kn与n不互质”不成立。)
从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。
证毕。
注意:以上步骤的操作是建立在刚开始时r≠0的基础之上的。即m与n亦互质。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App