算法与数据结构-数论之辗转相除法
来源:互联网 发布:淘宝海报素材psd免费 编辑:程序博客网 时间:2024/04/29 12:07
简介
辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。
两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,这个重要的等式叫做贝祖等式。
原理及其详细证明
设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,辗转相除法即是要证明gcd(a,b)=gcd(b,r)。
第一步:令c=gcd(a,b),则设a=mc,b=nc
第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c
第三步:根据第二步结果可知c也是r的因数
第四步:可以断定m-kn与n互素【否则,可设m-kn=xd,n=yd,(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公约数成为cd,而非c】
从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。
证毕。
计算机算法
long gcd(long a,long b){long temp;while(b>0){temp=a%b;a=b;b=temp;}return a;}
- 算法与数据结构-数论之辗转相除法
- 数论-欧几里德算法(辗转相除法求最小公倍数)
- 数论 辗转相除法 扩展欧几里德算法 素数 快速幂
- 欧几里得算法之辗转相除法
- 数论基础之辗转相除法求最大公约数
- 数论 -1 gcd之辗转相除法
- 数据结构之辗转相除法的错误实践
- 欧几里德算法(辗转相除法)
- 辗转相除法---欧几里得算法
- 欧几里得算法 辗转相除法 《数据结构与算法分析——Java语言描述》Mark Allen Weiss 第二章
- C++算法:辗转相除法与更相减损术
- 最大公约数之辗转相除法
- 最大公约数之辗转相除法
- hdu1222之辗转相除法
- 算法-欧几里得算法(辗转相除法)
- 欧几里德算法(辗转相除法) 求最大公约数
- 最小公约数-辗转相除法&stein算法
- 辗转相除法(欧几里得算法)示意图
- WPF 之InsertBefore 与 InsertAfter用
- 【有奖征文】情人节,和书一起走过的日子
- 使用代码分离构建自定义组件
- 新的小工具——KillFiles文件粉碎器
- ms2008 program configuration is incorrect
- 算法与数据结构-数论之辗转相除法
- Windows下面向连接的套接字通信
- SQLSERVER与ACCESSEXCEL的数据转换
- 【急】Delphi 使用MSMQ时的编码问题
- JNI多个线程中使用
- 16周作业(2)
- magento中获得博客aw_blog插件的分类与最近文章
- Android 安全机制
- Logiscope-Audit函数度量元