理论: 数论:拓展欧几里得算法及其证明
Posted sun897949163
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理论: 数论:拓展欧几里得算法及其证明相关的知识,希望对你有一定的参考价值。
拓展欧几里得算法
算法描述
定义1.7
.
![](https://image.cha138.com/20221210/5d60d4c48bce4d3e8b5bb6f6357dd1de.jpg)
算法证明
记,对a,b使用欧几里得定理得:
.
![](https://image.cha138.com/20221210/a3b280ca542a4b628870e1007dd136e5.jpg)
在这里我们代入
![](https://image.cha138.com/20221210/6f672dafbf694592b529a8a252b0da97.jpg)
.
![](https://image.cha138.com/20221210/077bdfc9aae446ad9e72c9ce6b191b1d.jpg)
我们将上式逐一向前代回, 就将得到rk关于a和b的线性组合。
.
![](https://image.cha138.com/20221210/f00cf8dd34804a27ba188100b01efb25.jpg)
算法推论
拉梅定理:用欧几里得算法计算两个正整数的驻地啊公因子时, 所需的除法次数不会超过连个整数中较小的那个十进制数的5倍
·
拉梅定理推论:求两个正整数a,b(a>b)的最大公因子需要O(log2a3)次运算
·
拓展欧几里得推论:如果gcd(a,b) = 1, 那么a,b互素
代码实现
// xm+yn=gcd(m,n)
long long exgcd(long long m, long long &x, long long n, long long &y)
long long x1, y1, x0, y0;
x0 = 1, y0 = 0;
x1 = 0, y1 = 1;
long long r = (m % n + n) % n;
long long q = (m - r) / n;
while(r)
x = x0 - q * x1; y = y0 - q * y1;
x0 = x1; y0 = y1;
x1 = x; y1 = y;
m = n; n = r; r = m % n;
q = (m - r) / n;
return n;
主要应用
求解不定方程
求模的逆元
求解同余方程组
下文上超链接
以上是关于理论: 数论:拓展欧几里得算法及其证明的主要内容,如果未能解决你的问题,请参考以下文章