Exgcd(扩展欧几里得算法)
其实挺简单。
GCD(辗转相除法)
定理:
证明:
code(递归式):
int gcd(int a,int b){ return (b==0)?a:gcd(b,a%b); }
EXGCD(扩展欧几里得)
裴蜀定理:
满足
证明(考虑数学归纳):
当
当
得证
通过这个证明,我们发现可以在维护
code:
int exgcd(int a,int b,int &x,int &y){ if(b==0) {x=1,y=0;return a;} else{ int ans=exgcd(b,a%b,y,x); y-=a/b*x; return ans; } }
用途(1,2为基本用途):
1.
首先看怎么解
这类方程
首先:若
所以我们将原方程左边
显然,我们将
2.
然后,我们再来看下同余方程
其实稍加转化,就得到了
解这个方程即可,注意
3.
最后,我们来看一下同余方程组
若所有
这里主要说不互质的用
首先看第一二个式子:
变形得到:
整理:
运用
将上式带入
变形得到:
于是我们就成功将两个同余方程化简成了一个。
同理化简下去直到一个,求解即可。
例题
——后来 jijidawang 说这就是
本文来自博客园,作者:5k_sync_closer,转载请注明原文链接:https://www.cnblogs.com/xrlong/articles/17069248.html
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了