当前位置:网站首页>扩展欧几里得定理
扩展欧几里得定理
2022-07-28 05:19:00 【今天也要加油啊!!】
扩展欧几里得定理
假设存在整数a,b满足贝祖等式 ax+by=gcd(a,b);那么一定存在一组解x0,y0,使得等式成立,那么扩展欧几里得定理的作用就是解出x0,y0的具体数值。
在具体了解它之前,我们先回顾一下欧几里得定理:
gcd(a,b),它是由古老而强大的辗转相除算法求得的,即
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
好了,现在我们可以来看看不定等式:ax+by=C;
若C不为gcd(a,b)的整数倍时,该不定等式是无解的;即C!=k*gcd(a,b),其中k为整数,则不存在x0,y0,满足该不等式。
我们再来看看贝祖等式:ax+by=gcd(a,b);
由上面的欧几里得定理我们可以知道当b=0时,返回值为a,将b=0带入贝祖等式中我们可以发现此时x=1,对应的y也为0;将x=1,y=0作为扩欧定理的递归出口。
经过上面欧几里得的一次递归我们可以推出 此时的等式为
bx1+(a%b)y1=gcd(a,b)
发现 a%b=a-(a/b)*b, 代入上述的等式中
整理得,ay1+b(x1-(a/b)y1)=gcd(a,b);
和原贝祖等式ax+by=gcd(a,b)对比可知,此时x=y1,y=x1-(a/b)*y1;
这是x,y的递推关系;由递归的性质,我们知道了上下层关系和递归出口,就可以写扩展欧几里得定理了。
递归时需要注意的是,我们是先求出的下一层,再返回上一层。
现在来看下扩展欧几里得的模板代码:
int exgcd(int a,int b,int &x,int &y) //注意这里最好是引用,因为x,y的值需要改变
{
if(b==0)
{
x=1;y=0;
return a;
}
int r=exgcd(b,a%b,x,y);
int temp=y;
y=x-(a/b)*y;
x=temp;
return r; //返回值为最大公约数
}
好啦,到这里就结束了,学习愉快哟!
边栏推荐
猜你喜欢

curd组件中的时间设置

结果填空 购物单(教你用Excel解决)

Review of metallurgical physical chemistry -- Fundamentals of chemical reaction kinetics

Custom JSON return data

【博学谷学习记录】超强总结,用心分享 | 集合

Review of metallurgical physical chemistry -- cathodic polarization, overpotential, anode and anode process in metal electrodeposition

DOM——页面的渲染、style属性操作、预加载与懒加载、防抖与节流

Delete specific elements in order table OJ

The Monte Carlo method solves the PI and draws points with turtle, and completes the progress bar problem

wangeditor(@4.7.15)-轻量级的富文本编辑器
随机推荐
Openjudge: filter extra spaces
ArrayList multithreading security solution
结果填空 煤球数目
蓝桥代码 翻硬币(我这样写也通过了,官网测试是不是有问题)
顺序表oj之删除特定的元素
Zotero——一款文献管理工具
uniapp-监听app是否有网络连接
顺序表的增删查改
shell运行原理
C语言回顾(字节对齐篇)
JUC notes
A file upload tool website written by individuals
ES6--->箭头函数、类、模块化
树莓派蓝牙调试过程
RESNET structure comparison
Advanced multithreading: the role and implementation principle of volatile
Interface idempotency problem
Invalid bound statement (not found): com.exam.mapper.UserMapper.findbyid
Oracle create table, delete table, modify table (add field, modify field, delete field) statement summary
MYSQL之搭建数据库系列(一)——下载MYSQL