证明:
由欧几里得算法知:gcd(a,b)=gcd(b,a%b).
由裴蜀定理知:一定存在x1和y1满足a*x1+b*y1=gcd(a,b),且也一定存在b*x2+a%b*y2=gcd(b,a%b).
因此由欧几里得算法和裴蜀定理知:
gcd(a,b)=gcd(b,a%b).
a*x1+b*y1=gcd(a,b).
b*x2+a%b*y2=gcd(b,a%b).
故:
a*x1+b*y1=b*x2+a%b*y2.
即:
a*x1+b*y1=b*x2+a-a/b*b*y2.
即:
a*x1+b*y1=b*(x2-a/b*y2)+a*y2.
因为左右两边相等,因此a和b的系数分别对应相等,因此x1和y1可以从x2和y2得来,
而x2和y2又可以向下递归,直到递归到欧几里得算法的边界,得到一组x2和y2的解,再因此向上回溯依次算出其对应的x1和y1,
即为满足a*x1+b*y1=gcd(a,b)的一组解x1和y1.

下面是Acwing一道模板题的代码:

题目链接

Acwing877. 扩展欧几里得算法

代码:

#include<iostream>
using namespace std;
typedef long long ll;
ll n,a,b,x,y;
ll exgcd(ll a,ll b,ll &x,ll &y)
{if(!b){x=1,y=0;return a;}ll d=exgcd(b,a%b,x,y);ll temp=y;y=x-a/b*y;x=temp;return d;
}
int main()
{ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;while(n--){cin>>a>>b;ll x,y;exgcd(a,b,x,y);cout<<x<<" "<<y<<'\n';}return 0;
}作者:前程似锦
链接:https://www.acwing.com/activity/content/code/content/1113777/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

关于扩展欧几里得算法的证明相关推荐

  1. 扩展欧几里得算法 | exgcd 证明 + 板子 + 习题

    扩展欧几里得算法 是在 欧几里得算法 && 裴楚定理 基础上得出来的 前提回顾: 欧几里得算法: g c d ( a , b ) = g c d ( b , a % b ) gcd(a ...

  2. 欧几里得扩展欧几里得算法及相关的数学证明

    //欧几里得算法求最大公约数 int gcd(int m,int n) {int u0=m,u1=n,t;if( u0<u1 )// 保证u0>=u1u0^=u1,u1^=u0,u0^=u ...

  3. 扩展欧几里得算法及贝祖定理的证明

    欧几里得算法 公式表述: 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 ...

  4. 扩展欧几里得算法证明及代码

    裴蜀定理: 存在两个正整数a,b,使得a * x + b * y = gcd( a , b ) 证明方法(扩展欧几里得算法): 1.当 b = 0 时gac( a , b ) = a易知 x = 1, ...

  5. 扩展欧几里得算法_扩展欧几里得递推算法

    欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...

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

    欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). ...

  7. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...

    难度较高,阅读时间大概 28 分钟 这是数论的第二篇,在<素数筛法>中,我们重温了素数这个数学定义,并且给出了区别于教科书上更高效的 Eratosthenes 筛法和欧拉线性筛.这篇文会从 ...

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

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

  9. c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解

    欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...

  10. 欧几里得算法及扩展欧几里得算法简单解释

    欧几里得算法: 解释:给定两个自然数,求出两个自然数的最大公约数.也叫--辗转相除法 过程:1.给定两个自然数a.b 2.a == 0 时 gcd(a,b)= b:b == 0 时 gcd(a,b) ...

最新文章

  1. 2020-10-26如何在Amazon AWS上设置一台免费Linux云主机
  2. 互联网公司职级和薪资一览!
  3. [原创]Zenoss配置入门-邮件短信通知
  4. 碰到日期题就怕的我来写一道水题吧
  5. python自动化操作应用程序错误_web自动化中踩过的低级错误坑(python+selenium)
  6. 拼多多:不搞套路,要实现同品全网最低价直售
  7. 如何使用iMazing将iPhone的数据迁移到iPad
  8. STM32在线仿真出现是循环,使用mcuisp下载程序却可以运行,JTAG下载程序可以下载成功,却没有任何动作!
  9. hbase版本与Hadoop版本支持关系(官方)
  10. 计算机中怎样重新安装ps,什么样的电脑适合安装高版本Photoshop?该如何安装和卸载PS呢?...
  11. C++:缺省参数是怎样设置的?
  12. 使用nodejs发送电子邮件
  13. (已拿offer)腾讯实习生笔试到面试总结(附带华为阿里面试经历)
  14. html广告倒计时代码,jquery实现可关闭的倒计时广告特效代码
  15. linux san网络,教你如何DIY SAN存储网络
  16. vue导入音乐_vue-music:添加歌曲到队列add-song.vue
  17. MAC通过HDMI转VGA转接头连接显示器
  18. 【AI绘画】二次元小姐姐生成!春节版!
  19. 【懒人笔记】Web前端开发库
  20. Unet实现细胞分割

热门文章

  1. 半正定矩阵的对角元素不小于该矩阵的最小特征值
  2. Excel Vba编程初探一
  3. 2021-03-04
  4. Linux操作系统安装ELK stack日志管理系统--(1)Logstash和Filebeat的安装与使用
  5. 免费下载IOS/MAc付费软件
  6. android手势密码csdn,LeetCode 351. 安卓系统手势解锁(回溯)
  7. 互联网卫星地图服务比较
  8. centos8解压war包
  9. photoshop实现图片更换背景
  10. 2022年广东省安全员A证第三批(主要负责人)考试试题及答案