欧几里得算法

公式表述: g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b)=gcd(b,a\%b) gcd(a,b)=gcd(b,a%b)
证明:
a a a 可以表示为 a = k b + r , r = a % b a = kb + r,r = a\%b a=kb+r,r=a%b
假设 d d d 是 ( a , b ) (a,b) (a,b) 的一个公约数,则有
d ∣ a , d ∣ b d|a,d|b d∣a,d∣b,而 r = a – k b r = a – kb r=a–kb,因此 d ∣ r d|r d∣r
所以 d d d 也是 ( b , a % b ) (b,a\%b) (b,a%b) 的公约数。

除了上面这个经典算法,还有 stein 算法用来求解最大公约数,只有整数的移位和加减法,比欧几里得算法在大整数上更有优势,可以去了解一下。

扩展欧几里得算法求解贝祖等式

贝祖定理(一般形式)

对于不全为 0 的自然数 a , b a,b a,b,则必然存在整数 x , y x , y x,y (不唯一)满足等式 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)

上面的等式就称做贝祖等式。

扩展欧几里得算法能够求解贝祖等式的正确性证明

设 a > b a > b a>b

  1. 当 b = 0 b = 0 b=0 时, g c d ( a , b ) = a gcd(a,b) = a gcd(a,b)=a
    贝祖等式即 a x = a ax = a ax=a,解得 x = 1 , y x = 1,y x=1,y 可以取 y = 0 y = 0 y=0
  2. 当 b > 0 b > 0 b>0 时,
    假设 a , b a,b a,b 的贝祖等式的解为 x 1 , y 1 x_1,y_1 x1​,y1​,即 a ⋅ x 1 + b ⋅ y 1 = g c d ( a , b ) ⋯ ⋯ 1 a\cdot x_1+b\cdot y_1=gcd(a,b)\cdots\cdots1 a⋅x1​+b⋅y1​=gcd(a,b)⋯⋯1
    b , a % b b,a\%b b,a%b 的贝祖等式的解为 x 2 , y 2 x_2,y_2 x2​,y2​,即 b ⋅ x 2 + a % b ⋅ y 2 = g c d ( b , a % b ) ⋯ ⋯ 2 b\cdot x_2+a\%b\cdot y_2=gcd(b,a\%b)\cdots\cdots2 b⋅x2​+a%b⋅y2​=gcd(b,a%b)⋯⋯2
    由欧几里得算法可知 g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b)=gcd(b,a\%b) gcd(a,b)=gcd(b,a%b)
    故 a ⋅ x 1 + b ⋅ y 1 = b ⋅ x 2 + a % b ⋅ y 2 a\cdot x_1+b\cdot y_1=b\cdot x_2+a\%b\cdot y_2 a⋅x1​+b⋅y1​=b⋅x2​+a%b⋅y2​
    即 a ⋅ x 1 + b ⋅ y 1 = b ⋅ x 2 + ( a − ⌊ a / b ⌋ ⋅ b ) ⋅ y 2 = a ⋅ y 2 + b ⋅ ( x 2 − ⌊ a / b ⌋ ⋅ y 2 ) a\cdot x_1+b\cdot y_1=b\cdot x_2+(a-\lfloor a/b\rfloor\cdot b)\cdot y_2=a\cdot y_2+b\cdot(x_2-\lfloor a/b\rfloor \cdot y_2) a⋅x1​+b⋅y1​=b⋅x2​+(a−⌊a/b⌋⋅b)⋅y2​=a⋅y2​+b⋅(x2​−⌊a/b⌋⋅y2​)
    由恒等关系可得 { x 1 = y 2 y 1 = x 2 − ⌊ a / b ⌋ ⋅ y 2 \begin{cases} x_1=y_2 \\y_1=x_2-\lfloor a/b\rfloor\cdot y_2 \end{cases} {x1​=y2​y1​=x2​−⌊a/b⌋⋅y2​​即贝祖等式 1 的解可以由 贝祖等式 2 的解得到,这是一个递归求解的过程,并且随着对 a , b a,b a,b 进行辗转相除,贝祖等式的系数会越来越小,直至变为情况1,而情况1贝祖等式的解是有具体的值的,即 x = 1 , y = 0 x = 1,y = 0 x=1,y=0。然后进行回溯计算,最终可以得到 x 1 , y 1 x_1,y_1 x1​,y1​。
    C++代码如下:
\\exGcd函数返回a,b最大公约数。贝祖等式的整数解为引用参数x,y
int exGcd(int a, int b, int& x, int& y){if(b == 0){x = 1;y = 0;return a;}int r = exGcd(b,a%b,x,y);int t = x;x = y;y = t - a/b*y;return r;
}

贝祖定理(更原始形式)的证明

若整数 a , b a,b a,b 互质,则存在整数解 x , y x,y x,y 满足 a x + b y = 1 ax + by = 1 ax+by=1

证明:
设 X , Y X,Y X,Y分别是使得 a X + b Y > 0 aX+bY > 0 aX+bY>0的整数集合,
令 s = m i n { a X + b Y } > 0 s = min\{aX + bY\} > 0 s=min{aX+bY}>0,假设此时 X = x 1 , Y = y 1 X=x_1,Y=y_1 X=x1​,Y=y1​
则有 a x 1 + b y 1 = s ax_1+by_1=s ax1​+by1​=s
假设 a a a 除以 s s s 的商为 k k k,余数为 r ( 0 ≤ r &lt; s ) r(0\le r &lt; s) r(0≤r<s)
则有 r = a − k s = a − k ( a x 1 + b y 1 ) = a ( 1 − k x 1 ) + b ( − k y 1 ) r=a-ks=a-k(ax_1+by_1)=a(1-kx_1)+b(-ky_1) r=a−ks=a−k(ax1​+by1​)=a(1−kx1​)+b(−ky1​)
但是因为其中 1 − k x 1 , − k y 1 ∈ Z 1-kx_1,-ky_1\in Z 1−kx1​,−ky1​∈Z,所以必须有 r = 0 r=0 r=0
否则 r &lt; s r&lt;s r<s与假设 s = m i n { a X + b Y } &gt; 0 s = min\{aX + bY\} &gt; 0 s=min{aX+bY}>0矛盾
故 s ∣ a s|a s∣a,同理可得 s ∣ b s|b s∣b
即 s s s 为 a , b a,b a,b 的公约数,又 a , b a,b a,b 互质
所以有 s = 1 s = 1 s=1
即存在整数 x , y x,y x,y使得 a ⋅ x + b ⋅ y = 1 a\cdot x+b\cdot y=1 a⋅x+b⋅y=1成立。

扩展欧几里得算法及贝祖定理的证明相关推荐

  1. 扩展欧几里得算法与中国剩余定理

    在<孙子算经>中有这样一个问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 这个问题说的是,有一件物品,我们不知道它的数量.但是,如果三个三个数,最后会剩下两个:如 ...

  2. 裴蜀(贝祖)定理及其证明

    定理 $\large{ax+by=c,x\in Z^*,y\in Z^*}$成立的充要条件是$\large{\gcd(a,b)|c}$ 证明 设$\large {s=\gcd(a,b)}$,显然$\l ...

  3. 裴蜀定理(贝祖定理) 证明与应用

    定理:对于给定的正整数a,b,方程有解的充要条件为c是gcd(a,b)的整数倍 证明: 充分性证明: 设gcd(a,b)=d,于是设,其中k1,k2互质 那么原等式等价于,即,其中k1,k2互质 那么 ...

  4. 5. 扩展欧几里得算法

    扩展欧几里得算法 1. 裴蜀定理 2. 扩展欧几里得算法求系数 3. 线性同余方程 1. 裴蜀定理 对任意一对正整数a,b,一定存在x,y,使得 ax + by = (a, b) (a和b的最大公约数 ...

  5. 有关贝祖定理的一个小问题

    有关贝祖定理的一个小问题 所谓贝祖定理是说: 两个整数 a.b 是互质的.等价于方程 ax+by=1有整数解. 当然. 贝祖定理另一种更一般的形式,说的是两个整数 a.b有最大公因数是c,等价于方程  ...

  6. 贝祖定理及其逆定理的几种证明

    文章目录 前言 贝祖定理 贝祖定理的证明 1.整除方法 2.辗转相减法 3.归纳法 贝祖定理逆定理的证明 内容 证明 总结 前言 第一次写CSDN的博客,因为我是学数学的,也学一些代码但是不多,所以文 ...

  7. 扩展欧几里得算法、乘法逆元与中国剩余定理

    文章目录 前言 定义.定理和部分证明 整除 定义 定理 定理的证明 同余 定义 同余的性质 同余的运算律 运算律的证明 扩展欧几里得算法 代码模板 算法详解 乘法逆元 求解逆元 乘法逆元的作用 中国剩 ...

  8. 欧几里得算法和扩展欧几里得算法(Euclidean_Algorithm and Extended_Euclidean_Algorithm)

    一.基本概念 欧几里得算法:又名辗转相除法,计算两个整数a,b的最大公约数. 扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ...

  9. 欧几里得扩展欧几里得算法

    #朴素的欧几里得算法大家应该知道 g c d ( a , b ) gcd(a,b) gcd(a,b)表示a,b的最大公约数 朴素的欧几里得算法其实就是所谓的辗转相除法 辗转相除法 g c d ( a ...

最新文章

  1. [翻译] DSL和模型驱动开发的最佳实践(3/4)
  2. bugku ——加密 做题记录
  3. android OKHttp的基本使用详解
  4. 北京理工大学珠海学院专业计算机类,北京理工大学珠海学院计算机学院网络工程专业...
  5. 直播报名 | 从业务场景入手,吃透音视频技术
  6. kinect1+depthimage_to_laserscan
  7. vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
  8. OCR基于深度学习下的CNN字符识别
  9. 机器学习-决策树(XGBoost、LightGBM)
  10. html调用ckplayer说明,CKplayer功能配置(示例代码)
  11. 一个敷衍的开头。。。
  12. Portraiture4.0最新免费磨皮美白滤镜修图插件
  13. Android本地文件存储,机身和外置sd卡
  14. 一文读懂,WMS仓库管理系统模块功能
  15. R studio caret package 安装
  16. Sql Server REPLACE函数的使用;SQL中 patindex函数的用法
  17. 1.3.9 python中进程与线程
  18. GPS从入门到放弃(十五)、DCB差分码偏差
  19. 烟草行业IT规划现状、实施及工作重点分析
  20. 阿里云话费api调用实例教程

热门文章

  1. 分布式技术原理与实战45讲--06 加餐1:如何准备一线互联网公司面试?
  2. Windows10 安装软件时提示“ the error code is 2503/2502”错误解决办法
  3. KVM切换器工作原理
  4. 网络安全职业规划(笔记)
  5. 《软技能-代码之外的生存指南》学习笔记之理财篇
  6. 计算机服务器排名,2019服务器CPU天梯图 多路CPU性能排名
  7. CMA认证与CNAS认可的八大区别,你知道几个?
  8. yii ajax验证失败返回提示,Yii使用ajax验证显示错误messagebox的解决方法
  9. 【如何使用idea合并当前分支的代码到主分支】
  10. 编码原理详解(五)---熵编码(CAVAL)