扩展欧几里德算法的定义、解释、证明及其应用
定义:
对于不完全为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的话,则无整数解(这个很容易证明,我就不多说了)
相关题目:poj1061、poj2115
转载于:https://www.cnblogs.com/onestow/p/4333228.html
扩展欧几里德算法的定义、解释、证明及其应用相关推荐
- 扩展欧几里德算法详解
转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595 扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两 ...
- 欧几里德与扩展欧几里德算法——密码学笔记(五)
一.欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a% ...
- 欧几里德算法与扩展欧几里德算法
欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd( ...
- 欧几里德算法 扩展欧几里德算法 求解丢番图方程
欧几里德算法 即辗转相除法,计算整数A, B最大公约数. 基本算法:设 a = kb + r,其中a,b,k,r都是整数,则 gcd(a,b) = gcd(b,r),即 gcd(a,b) = gcd( ...
- 欧几里德和扩展欧几里德算法
1.欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb ...
- 扩展欧几里德算法计算乘法逆元详解
乘法逆元的定义: A * X MOD N == 1则称X为A关于模N的乘法逆元. 注: 只有两个数互素的时候才会有乘法逆元. 两个数不互素是没有乘法逆元的. 费马小定理: 利用费马小定理只能求出N为素 ...
- poj 2115 C Looooops(扩展欧几里德算法)
题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...
- (扩展欧几里德算法)zzuoj 10402: C.机器人
10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...
- Bailian2793 孙子问题【扩展欧几里德算法+中国剩余定理】
2793:孙子问题 总时间限制: 15000ms 内存限制: 65536kB 描述 我国古代<孙子算经>中,记有如下算题:"今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩 ...
- 扩展欧几里德算法解决问题A:Jugs
Jugs codeup的Jugs题目需要使用扩展欧几里德算法解决: Zoj的jugs题目需要使用BFS算法解决: codeup的Jugs题目需要使用扩展欧几里德算法解决: 题目链接:http://co ...
最新文章
- 算法(第四版)C# 习题题解——1.3
- 世界隐形冠军比拼:德国1307家、美国366家、中国68家
- 奇思妙想——我心中的智能自行车
- Python中爬虫框架或模块的区别!
- Spring框架人气暴涨 简洁高效是关键
- python 装饰器实现_Python装饰器系列01 - 如何正确地实现装饰器
- repr方法字符串输出实例对象的值
- 检测Linux系统是否支持某系统调用
- 疫情当前,企业“逆势而上”还需“上云”加速
- 第1章 网站与网站的建设过程
- 转 《pywinauto进行win32应用程序的测试》
- Jsoup进阶之获取指定数据
- Windows下安装PyQt5教程
- mysql卸载详细教程
- SBUS协议数据演示
- matlab 汽车雷达模拟器,雷达回波模拟器在汽车雷达测试中的应用
- (产品分析)KFC肯德基APP分析报告
- 学python用linux_用树莓派学习Linux及Python真的高效吗?
- 删除当前用户IE临时文件win7版批处理
- 赖美云的认证照_火箭少女最新路透照出炉:吴宣仪赖美云魅力十足,张紫宁傅菁凭颜值圈粉...
热门文章
- Collections.sort new Compartor 用法
- WinAPI: midiOutSetVolume - 设置 MIDI 输出设备的音量
- PingingLab传世经典系列《CCNA完全配置宝典》-2.9 OSPF基本配置
- 【转载】为什么要用黑莓?
- [JavaScript]面向对象编程
- SOA系列文章之(四):在Web服务中使用SOA
- python socket编程(tcp/udp)
- python查看服务器日志_python读取服务器日志的方法
- 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
- oracle安装最后一步完成了就消失了_Oracle安装过程中遇到的一些问题及解决方案...