定义:

对于不完全为0的两个整数a,b,gcd(a,b)表示a,b的最大公约数

则必然存在整数对x,y,使得gcd(a,b)=ax+by。

(由数论中的相关定理可知,至于这个相关定理是什么,我也不清楚我也不深究这个)

解法及证明:

①显然当b=0时,有x=1,y=0。

由欧几里德算法我们知道gcd(a,b)=gcd(b,a%b)(PS:%为求余运算符)

所以我们可以得到以下关系式:a*x1+b*y1=b*x2+a%b*y2,该式等同于a*x1+b*y1=b*x2+(a-[a/b]*b)*y2

变形可得a*x1+b*y1=a*y2+b*(x2-[a/b])

所以我们可以得到以下递推式:x1=y2,y1=x2-[a/b],结合①为递推结束条件,即可求解.

代码实现:

void exgcd(int a,int b)
{if(b==0) {x=1;y=0;return;}exgcd(b,a%b);int t=y;y=x-a/b*y;x=t;
}

由一组解推出所有解:

已知x1,y1是二元一次方程ax+by=c的一组整数解,则其所有解的通式为x=x1+kb,y=y1-ka(k为整数)

证明:略

推广到一般二元一次方程求整数解:

例如我们要求二元一次方程ax+by=c的整数解

令d=gcd(a,b),如果c%d!=0的话,则无整数解(这个很容易证明,我就不多说了

方程两边除以d得a/d*x+b/d*y=c/d,这里显然gcd(a/d,b/d)=1
所以我们可以先用扩展欧几里德算法求出a/d*x+b/d*y=1的解
然后求出的x和y再乘以c/d即为原二元一次方程的一组整数解

相关题目:poj1061、poj2115

转载于:https://www.cnblogs.com/onestow/p/4333228.html

扩展欧几里德算法的定义、解释、证明及其应用相关推荐

  1. 扩展欧几里德算法详解

    转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595 扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两 ...

  2. 欧几里德与扩展欧几里德算法——密码学笔记(五)

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

  3. 欧几里德算法与扩展欧几里德算法

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

  4. 欧几里德算法 扩展欧几里德算法 求解丢番图方程

    欧几里德算法 即辗转相除法,计算整数A, B最大公约数. 基本算法:设 a = kb + r,其中a,b,k,r都是整数,则 gcd(a,b) = gcd(b,r),即 gcd(a,b) = gcd( ...

  5. 欧几里德和扩展欧几里德算法

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

  6. 扩展欧几里德算法计算乘法逆元详解

    乘法逆元的定义: A * X MOD N == 1则称X为A关于模N的乘法逆元. 注: 只有两个数互素的时候才会有乘法逆元. 两个数不互素是没有乘法逆元的. 费马小定理: 利用费马小定理只能求出N为素 ...

  7. poj 2115 C Looooops(扩展欧几里德算法)

    题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...

  8. (扩展欧几里德算法)zzuoj 10402: C.机器人

    10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...

  9. Bailian2793 孙子问题【扩展欧几里德算法+中国剩余定理】

    2793:孙子问题 总时间限制: 15000ms 内存限制: 65536kB 描述 我国古代<孙子算经>中,记有如下算题:"今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩 ...

  10. 扩展欧几里德算法解决问题A:Jugs

    Jugs codeup的Jugs题目需要使用扩展欧几里德算法解决: Zoj的jugs题目需要使用BFS算法解决: codeup的Jugs题目需要使用扩展欧几里德算法解决: 题目链接:http://co ...

最新文章

  1. 算法(第四版)C# 习题题解——1.3
  2. 世界隐形冠军比拼:德国1307家、美国366家、中国68家
  3. 奇思妙想——我心中的智能自行车
  4. Python中爬虫框架或模块的区别!
  5. Spring框架人气暴涨 简洁高效是关键
  6. python 装饰器实现_Python装饰器系列01 - 如何正确地实现装饰器
  7. repr方法字符串输出实例对象的值
  8. 检测Linux系统是否支持某系统调用
  9. 疫情当前,企业“逆势而上”还需“上云”加速
  10. 第1章 网站与网站的建设过程
  11. 转 《pywinauto进行win32应用程序的测试》
  12. Jsoup进阶之获取指定数据
  13. Windows下安装PyQt5教程
  14. mysql卸载详细教程
  15. SBUS协议数据演示
  16. matlab 汽车雷达模拟器,雷达回波模拟器在汽车雷达测试中的应用
  17. (产品分析)KFC肯德基APP分析报告
  18. 学python用linux_用树莓派学习Linux及Python真的高效吗?
  19. 删除当前用户IE临时文件win7版批处理
  20. 赖美云的认证照_火箭少女最新路透照出炉:吴宣仪赖美云魅力十足,张紫宁傅菁凭颜值圈粉...

热门文章

  1. Collections.sort new Compartor 用法
  2. WinAPI: midiOutSetVolume - 设置 MIDI 输出设备的音量
  3. PingingLab传世经典系列《CCNA完全配置宝典》-2.9 OSPF基本配置
  4. 【转载】为什么要用黑莓?
  5. [JavaScript]面向对象编程
  6. SOA系列文章之(四):在Web服务中使用SOA
  7. python socket编程(tcp/udp)
  8. python查看服务器日志_python读取服务器日志的方法
  9. 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
  10. oracle安装最后一步完成了就消失了_Oracle安装过程中遇到的一些问题及解决方案...