前言:仅个人小记。欧几里得算法提供了求解最大公约数的方法,而求解最大公约数是十分有意义的,因为当两个数的最大公约数为1的时候,这两个数就是互质的,即gcd(a,b)=1 等价于 a与b互质,而互质这个性质在数论中则是非常重要

结论交代

欧几里得算法(Eculidean Algorithm)指明:a,b最大公约数(Greatest Common Divisor),就等于b,a%b的最大公约数,公式如下

gcd(a,b)=gcd(b,a%b)gcd(a,b) = gcd(b,a \% b)gcd(a,b)=gcd(b,a%b)

但实际上,不仅仅是最大公约数,普通的公约数(Common Divisor)也吻合上面情况,即有cd(a,b)=cd(b,a%b)cd(a,b)=cd(b,a\%b)cd(a,b)=cd(b,a%b)
所以,上述最大公约数的性质只是普通公约数的一个特例

引理证明

如果 (a + b) % d = 0,b % d = 0,则必然有 a % d = 0。
证明如下
因为(a + b) % d = 0 ,b % d = 0,
所以可以令 a + b = kd , b = k’ d, 其中k 和 k’ 都是整数。
进而,a + b = kd ----> a + k’d = kd -----> a = (k-k’)d, a 是 d 的整数倍,进而必有 a % d = 0,证毕。

证明过程

cd(a,b)=cd(b,a%b)cd(a,b)=cd(b,a\%b)cd(a,b)=cd(b,a%b)。
a = kb + r,则有 r = a - kb,

正向

若 d 是 a , b的公约数有,则必有 a % d = 0 以及 b % d = 0,进而必有 r % d = 0,所以显然 d 也是 b, r 的公约数

反向

若 d 是 b, r 的公约数, 则必有 a % d = 0 以及 r % d = 0, b %d= 0 以及 (a - kb) % d=0,借助上述引理证明,进而必有 a % d = 0。

综述

d 是 a, b 的公约数,则 d 必然是 b, r 的公约数; d 是 b, r 的公约数, 则 d 必然是 a, b 的公约数; a, b 的公约数必然是 b, r 的公约数, cd(a,b)=cd(b,r)=cd(b,a%b)cd(a,b)=cd(b,r) = cd(b,a\%b)cd(a,b)=cd(b,r)=cd(b,a%b),示意如下图

证毕。

讨论
  1. 故而,求 a,b 公约数问题就等价于求 b, r 公约数问题, 进而求 a,b 最大公约数问题等价于求 b, r 最大公约数问题,即gcd(a,b)=gcd(b,a%b)gcd(a,b) = gcd(b,a \% b)gcd(a,b)=gcd(b,a%b)
    用欧几里得算法求解最大公约数的代码如下:
int gcd(int a, int b){if (b == 0) return a;return gcd(b,a%b);
}

原理一般化拓展

  1. 以上对欧几里得算法的证明,同时也就是对 “如果a⊥ba\perp ba⊥b,则必然有 a+kb⊥ba+kb \perp ba+kb⊥b” 的证明。这个公式更有一般化的原理意义,而以上欧几里得算法只是具体为余数 r与模数 b互质的证明 ,即证明 r = a - kb 与 b 互质。显然,r = a - kb 只是归属于 a+kb 的一种表达,故而可以直接得证。该原理如下图所示,

谢谢支持! 邮箱: officeforcsdn@163.com

欧几里得算法(求解最大公约数的优质方法)以及原理拓展相关推荐

  1. 辗转相除法(欧几里得算法)求解最大公约数、最小公倍数

    辗转相除法(欧几里得算法)求解最大公约数.最小公倍数 通常来说,求解两个数的最大公约数和最小公倍数是常见的算法问题,我们正常人最先想到的肯定是穷举法,通过while循环或者for循环,不断改变循环数, ...

  2. 数论 - 约数基础 【 试除法求所有约数 + 约数个数和约数之和 + 欧几里得算法-求解最大公约数 】

    数论-约数基础 1.约数定义 约数,又称因数.整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a.a称为b的倍数,b称为a的约数.在大学之前,"约数 ...

  3. 欧几里得算法求最大公约数python,算法:欧几里得求最大公约数(python版)

    #欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...

  4. 离散数学/初等数论:用“质因子分解法”和“欧几里得算法”求最大公约数gcd;“质因子分解法”和“最简算法”求最小公倍数lcm;以及对“意义”的一些看法。

    需要在开头提前说明,本篇文章仅仅用于在学习初等数论或者离散数学时候对算术基本定理的理解,实际应用的时候把结论告诉大家,想求最大公约数就用欧几里得算法是最简单的,在本篇不再赘述,有机会我会在其他文章中说 ...

  5. 用欧几里得算法求最大公约数_欧几里得算法:GCD(最大公约数),用C ++和Java示例解释...

    用欧几里得算法求最大公约数 For this topic you must know about Greatest Common Divisor (GCD) and the MOD operation ...

  6. 最大公约数python语言算法_使用Python求解最大公约数的实现方法

    这篇文章主要介绍了使用Python求解最大公约数的实现方法,包括用Python表示欧几里得算法和Stein算法的求解原理. 1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的 ...

  7. 欧几里得算法求最大公约数、最大公倍数

    欧几里得算法求最大公约数.最大公倍数 最大公约数(Greatest Common Divisor, GCD),是指2个或N个整数共有约数中最大的一个.a,b的最大公约数记为(a, b).相对应的是最小 ...

  8. 辗转相除法(欧几里得算法)求 最大公约数与最小公倍数+推论与证明。

    首先我们规定:0不参与公约数和公倍数的讨论 先来讨论最大公约数: 最大公约数求法:两个数的所有公共质数相乘. 考虑三个问题. 为什么是公共的:公共代表这个数可以被两个数都整除 为什么是质数:合数一定能 ...

  9. python最大公约数计算_使用Python求解最大公约数的实现方法

    1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数.其计算原理依赖于下面的定理: 定理: gcd(a, b) = gcd(b, a mod b) 证明: a可以表示 ...

  10. C语言:欧几里得算法求最大公约数

    文章目录 欧几里得算法 C语言:欧几里得算法求最大公约数 C语言:穷举法 欧几里得算法 举个例子说明欧几里得算法. 如图所示,用正方形地板砖,把这一块粉红色空地(长为xxx,宽为yyy,x>yx ...

最新文章

  1. git 创建分支并合并到master 上
  2. python类成员_Python的类成员和对象成员
  3. WatchOS系统开发大全(8)-WKInterfaceGroup
  4. 通汇手机为何卖得那么红火
  5. 可视化排班管理_小白经理的思考日记-可视化看板和走动管理
  6. 今晚直播丨Oracle数据库之Object的Access方法和结合方法
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的房屋租赁系统
  8. linkedin 爬虫
  9. Java架构师成长之道之计算机组成原理概述篇
  10. 9.计蒜客ACM题库.A1602 结果填空:开关灯
  11. JVM - 【字符串常量池】-XX:StringTableSize
  12. 什么是生成艺术NFT,Art Blocks为什么能持续霸榜
  13. QEMU 安装与使用
  14. 微信公众号基础04_分享和录音功能的实现
  15. Nvidia30系显卡+Ubuntu系统的CUDA 11安装100%成功教程
  16. 4 款超级好用的终端文件管理器
  17. tableau实现年累计,月累计投放以及同比环比
  18. MySQL的二叉树、平衡二叉树、2,3查找树、B树、B+树索引
  19. linux命令之jq
  20. 【转自知乎】软件实施工程师技能要求

热门文章

  1. alertmanager配置详解
  2. 读书寄语:这一年,谢谢自己
  3. 德州大学计算机系郭小虎2021,2021美国德州农工大学PhD项目
  4. 不知道免费去水印图片软件哪个好?来看看这3个软件
  5. 一本通1486:【例题1】黑暗城堡(最小路径树计数)
  6. 解决VMware中的Windows Server 2012 R2无法成功安装Hyper-V的问题
  7. 装linux双系统有什么好处,科学网—Windows和Linux双系统安装教程 - 戴劭勍的博文...
  8. musiclink-v1.9 一款php源码的音乐外链程序,musiclink-v1.9 一款PHP源码的音乐外链程序 - 下载 - 搜珍网...
  9. Linux进程管理与控制课后作业
  10. 每人都会遇到的三件事: 1.楼上传来弹珠的声,2.曾经的梦里出现过,3.马上就要睡着却突然感觉下坠...