可公度线段与欧几里得(Euclid)算法
来源:互联网 发布:excel数据有效性菜单 编辑:程序博客网 时间:2024/04/30 08:52
通过本文,我们将发现欧几里得算法(求两个数的最大公约数,也称作辗转相除),根本不需要死记硬背,仅仅通过数论中的一个小小的结论(有关可公度线段,commensurable),即可轻易推导出来。
既然算法来自欧几里得两千年前的几何原本
一书,我们也回归代数与几何在书中含义上的统一,继续沿用书中的说法。假如我们要求线段
如果
b 正好能度量a (b 能度量a 的含义是a 是b 的整数倍),b 自然也能度量它自身,因此b 就是a 和b 的一个公度单位;如果
b 不能被a 整除,这说明a 的长度等于b 的某个整数倍,再加上一个零头(余数),不妨把该零头记为c ,也即此时a=k⋅b+c 。如果此时某条线段能同时度量b 和c ,那么它显然也能度量a 。也即,此时为了找到a 和b 的共度单位,我们只需寻找b 和c 的公度单位即可。此时便构成了递归;
def euclid(a, b): if a < b: a, b = b, a return b if a % b == 0 else euclid(b, a%b)
证明
我们不妨把 Euclid 算法对
效率
欧几里得算法(辗转相除法)的效率其实非常高。实际上,我们可大致估计出辗转相除的效率。第一次做除法时,我们
如果
b 的值不超过a 的一半,那么c 更不会超过a 的一半(因为余数小于除数)。如果
b 的值超过了a 的一半,那么c 直接就等于a−b (a=k⋅b+c ,此时k 只能为1),同样小于a 的一半;
也即辗转相除法的运算次数是对数级别的;
- 可公度线段与欧几里得(Euclid)算法
- Euclid(欧几里得)算法
- 欧几里得 & 拓展欧几里得算法 讲解 (Euclid & Extend- Euclid Algorithm)
- 欧几里得 & 拓展欧几里得算法 讲解 (Euclid & Extend- Euclid Algorithm)
- 《应用密码学》 欧几里得算法-Euclid
- 拓展欧几里得(Extend Euclid)
- Euclid算法与RSA
- 扩展欧几里得(Extended Euclid)算法求最大公约数和乘法逆元
- Algorithms - 最大公约数(greatest common divisor)-欧几里得(Euclid) 算法 及 代码
- 欧几里得与扩展欧几里得算法
- Euclid 算法
- Euclid 算法
- Euclid算法
- 欧几里得算法与扩展欧几里得算法
- 欧几里得算法与扩展欧几里得算法
- 欧几里得算法与扩展欧几里得算法模板
- 欧几里得算法与最大公约数
- 初步了解欧几里得算法与扩展欧几里得
- split 分割 字符串(分隔符如:* ^ : | , .) 及注意点
- 设计模式之:构造者模式
- 朴素贝叶斯
- 西门子S7-200 Smart PLC过程控制工控机数据记录与曲线显示系统
- UIStatusBarStyle PreferredStatusBarStyle does not work
- 可公度线段与欧几里得(Euclid)算法
- CocoaPods安装、卸载、使用说明(Mac ox 10.11+)
- Linux 最常用的操作命令
- skb-5
- 触发器trigger
- Microscan Visionscape/Autovision通用工业智能相机视觉检测系统
- android singleTask 加载模式的理解
- ActiveMQ动态发现集群
- 安装python