欧几里得算法是计算两个数最大公因子算法。又称辗转相除法。本文将学习为什么辗转相除法可以求得两个数的最大公因子。同时也可以根据最大公因子计算两个数的最小公倍数。

文章目录

  • 1 欧几里得算法的理论基础
    • 1.1 欧几里得算法(辗转相除法)
  • 2 裴蜀等式(贝祖等式)

1 欧几里得算法的理论基础

设 a=qb+r, 其中 a, b, q, r 都是整数, 则

  • GCD(a, b) = GCD(b, r)

证明过程如下:

1.1 欧几里得算法(辗转相除法)

  • 欧几里得算法(辗转相除法) GCD ( a, b )
  • 输入: 整数 a, b , 满足 a >= b >= 0 , 且 a, b 不全为0
  • 输出: GCD(a, b)

由上面欧几里得算法的理论基础知:GCD(a, b) = GCD(b, r)

则,欧几里得算法的步骤如下:

可以由欧几里得算法计算两个数的最大公约数后,根据GCD(a,b)*LCM(a,b)=a*b 计算最小公倍数。

2 裴蜀等式(贝祖等式)

  • 对于不全为0的整数 a, b 和 d , 方程 sa+tb=d存在整数解 s 和 t 当且仅当 GCD(a, b)|d 。
  • 方程 sa+tb=d 称作裴蜀(Bezout) 等式或贝祖等式。

证明:

  1. 充分性证明:sa+tb=GCD(a, b)可定是存在整数解的,设为 s0、 t0。若d=kGCD(a, b)=k(sa+tb),则k*s0, k*t0是方程的一个解。
  2. 必要性证明:若方程 sa+tb=d 存在整数解 s 和 t 则GCD(a, b) | (sa+tb)=d

【离散数学中的数据结构与算法】二 欧几里得算法与裴蜀等式相关推荐

  1. 【离散数学中的数据结构与算法】六 排列与组合二

    接着上一篇学习:[离散数学中的数据结构与算法]五 排列与组合一 上一篇文章主要学习了可重复选取的可重排列和不可重复选取的排列.他们都是在n个不同的对象中选取. 今天我们俩学习的是,当这个n个对象中有相 ...

  2. 【离散数学中的数据结构与算法】十一 错排问题

    错排问题比较难,但是也是经典算法问题 文章目录 1 错排问题 2 总结 1 错排问题 家中阳台有10盆不同的花,为保持新鲜感,希望每天重新摆放,使得每盆花都不在第一天放的位置.那么最多可以保持多少天每 ...

  3. 【离散数学中的数据结构与算法】十 汉诺塔

    汉诺塔也是经典的算法问题 文章目录 1 汉诺塔问题 1 汉诺塔问题 法国数学家卢卡斯(Edouard Lucas)在1883年提出了一个数学游戏: 传说在世界中心贝拿勒斯(印度北部)的圣庙里,一块黄铜 ...

  4. 【离散数学中的数据结构与算法】七 排列与组合三

    前两篇文章学习了不可重复选取的排列与可重复选取的可重排列.本篇文章开始学习组合的相关定理. 文章目录 1 组合 1.1 组合的计算公式 2 总结 1 组合 跟排列一样.组合也分为不重复选取的组合,与可 ...

  5. 【离散数学中的数据结构与算法】五 排列与组合一

    在leetcode刷题过程中,遇到过很多关于排列组合的问题.弄清楚排列组合的相关原理,是非常有用处的. 文章目录 1 问题 2 排列-有序选取 2.1 重复选取-可重排列 2.2 不重复选取-排列 2 ...

  6. 【离散数学中的数据结构与算法】九 鸽巢原理

    鸽巢原理是非常著名的原理,生活正用的也很多. 文章目录 1 简单鸽巢原理的应用 2 定理(一般性鸽巢原理) 2.1 应用 3 总结 1 简单鸽巢原理的应用 定理(鸽巢原理) 若有 n 个鸽巢, n+1 ...

  7. 【离散数学中的数据结构与算法】八 排列与组合四

    上一篇文章学习了组合(不可重复选取的).今天来将可重复选取的组合学习一下. 文章目录 1 可重复选取的组合-可重组合 2 总结 1 可重复选取的组合-可重组合 现在有4种口味的棒棒糖,你要从中选3个( ...

  8. 【离散数学中的数据结构与算法】四 加法法则与乘法法则

    文章目录 1 加法法则 2 乘法法则 3 例子 3.1 例一 3.2 例二 3.3 例三 4 总结 1 加法法则 加法法则: 设事件 A 有 m 种产生方式, 事件 B 有n 种产生方式,则当 A 与 ...

  9. 【离散数学中的数据结构与算法】三 同余定理

最新文章

  1. java 方法里面定义接口_java – 当接口A在其方法签名中定义接口B时
  2. 一起睡了四年的大学舍友
  3. asm冗余 oracle_oracle asm 磁盘管理什么场景该用什么样的冗余方式
  4. mysql查询各科前3_MySQL 查询各科前三的数据
  5. 鍵盤彈出,頁面佈局被推上去了.....
  6. Python的线性查找(作业)
  7. Mockito框架代码学习调试
  8. 下找到vue变量_Vue:npm run serve 到底做了什么?
  9. 倒排索引-搜索引擎的基石
  10. java中登陆界面怎么连接到下一个界面啊_JavaWeb登陆成功后跳转到上一个页面
  11. 我的第一个keil工具写的汇编
  12. 从头开始复习css之选择器(中)
  13. Jenkins 升级到2.42 Junit test report 出现错误的解决
  14. scipy模块_misc模块,imread,imresize, imsave / imshow/ imrotate
  15. 信息化系统软件实施工程师基础技能
  16. 纯css绘制简易对话气泡
  17. VCN 在windows和linux之间 复制粘贴
  18. linux设置开机自启某个命令
  19. ​浙江省交通运输物流信息服务中心平台容灾设备采购二期项目
  20. Ubuntu LiveSuit V3.06不能烧写问题

热门文章

  1. 计算机操作系统(2):OS的发展过程
  2. Python List sort()方法
  3. 移动端H5终端适配方案
  4. 每日一学:如何读取网络图片
  5. Leetcode 系列 | 反转链表
  6. android ndk gcc,Android NDK GCC似乎是铿锵的 - 它应该是这样吗?
  7. php 数据类型伪类型,PHP之伪类型与变量
  8. centos安装后两个启动项、_Windows安装Centos7双系统后Windows启动项消失
  9. Problem01 不死神兔
  10. Objective-C学习笔记-使用NSString与NSData读写文件