当前位置: 首页 > news >正文

扩展欧几里得算法

扩展欧几里得算法

常用来计算不定方程 \(ax+by=\gcd(a,b)\) 的一组特解,采用递归的计算流程

\[\gcd(a,b)=ax+by\\ \]

根据欧几里得定理可知

\[\gcd(a,b)=\gcd(b,a\ \mathrm{ mod}\ b)\\ \gcd(b,a\ \mathrm{ mod}\ b)=bx_1+(a-\lfloor\frac{a}{b}\rfloor\times b)y_1 \]

拆开括号移项后得到

\[\begin{align} \gcd(a,b)&=ax+by\\ \gcd(b,a\ \mathrm{ mod}\ b)&=ay_1+b(x_1-\lfloor\frac{a}{b}\rfloor y_1)\\ \Rightarrow x=y_1&,y=x_1-\lfloor\frac{a}{b}\rfloor y_1\end{align} \]

当递归计算 \(\gcd(a,b)\) 中的 \(b = 0\) 时,\(ax=\gcd(a,0)=a\) ,此时应当返回 \(x=1,y=0\);逐层向上回代计算

最终求得特解 \(x_0,y_0\) ,然后考虑通解的构造

\[\left\{ \begin{align} x=x_0+\frac{b}{\gcd(a,b)}\times k\\ y=y_0-\frac{a}{\gcd(a,b)}\times k\\ \end{align} \right. \]

这样构造的原因是可以满足

\[a\left(x_0+\frac{b}{\gcd(a,b)}\times k\right) + b\left(y_0-\frac{a}{\gcd(a,b)}\times k\right)=ax_0+by_0=\gcd(a,b) \]

LL exgcd(LL a, LL b, LL &x, LL &y){if (b == 0){x = 1, y = 0;return 1;}LL x1, y1, d;d = exgcd(b, a % b, x1, y1);//递归计算下一层x = y1, y = x1 - a / b * y1;//回代计算return d;//返回当前gcd(a, b)
}

不定方程

根据裴蜀定理,可以证明方程 \(ax+by=c\) 存在正整数解当且仅当 $c\equiv 0(\mathrm{mod}\ \gcd(a,b)) $

在计算不定方程的过程中,可以先计算出方程 \(ax+by=\gcd(a,b)\) 的某个特解

然后将特解 \(x_0,y_0\) 乘上 \(\frac{c}{\gcd(a,b)}\) 得到 \(ax+by=c\) 的特解 \(x_t,y_t\) ,构造通解有:

\[\left\{ \begin{align} x=x_t+\frac{b}{\gcd(a,b)}\times k\\ y=y_t-\frac{a}{\gcd(a,b)}\times k\\ \end{align} \right. \]

同余方程

形如 \(ax\equiv b(\mathrm{mod}\ m)\) 的方程为同余方程,可以利用扩展欧几里得算法求解

\[ax\equiv b\mod m \iff ax=(-my) + b\\ \]

得到 \(ax+my=b\) ,这个不定方程利用扩展欧几里得算法求解后可以得到一组特解(\(b\) 应当被 \(\gcd(a,m)\) 整除)

乘法逆元

\(a,m\) 互质时,对于同余方程 \(ax\equiv1(\mathrm{mod\ m})\)\(a\) 的乘法逆元 \(x\)

同样转化为 \(ax+my=1\) ,然后求解 \(ax+my=\gcd(a,m)\) 的特解 \(x\)

最终的逆元应该被表示为 \(x\ \mathrm{mod}\ m\)

LL exgcd(LL a, LL b, LL &x, LL &y){if (b == 0){x = 1, y = 0;return 1;}LL x1, y1, d;d = exgcd(b, a % b, x1, y1);x = y1, y = x1 - a / b * y1;return d;
}LL a, b, x, y;
cin >> a >> b;
LL g = exgcd(a, b, x, y);
cout << (x % b + b) % b;
http://www.sczhlp.com/news/207417/

相关文章:

  • 今日学习笔记
  • CSP-S 2022 Solution
  • 【为美好CTF献上祝福】unity逆向
  • 公司名称域名网站网络服务器功能概述
  • 网站怎么做双语种有哪些比较好的做ppt好的网站
  • 龙口市规划建设局网站做网站的公司都有哪些岗位
  • 网站代运营合同为什么明明有网却打不开网页
  • 查询类网站怎么做学生网站建设可行性分析
  • 中卫网站制作公司报价广东装饰网站建设
  • ...课程网站建设简介门户网站后台建设模块
  • 住房和建设执业资格注册中心网站北京金港建设股份有限公司网站
  • 佛山营销网站建设多少钱wordpress侧栏滑动
  • 婚纱摄影网站软件app制作
  • icp备案网站amon wordpress
  • wordpress 返回上一页东莞市网络seo推广怎么样
  • 山阳网站建设网站建设公司的电话
  • 网站开发demo是什么网站建设对企业的要求
  • 网站制作网站价格网站怎么换服务器
  • 株洲市荷塘区城乡建设局网站阿里云wordpress在哪里设置密码
  • 网站人员队伍建设落后搭建一个公司网站
  • 制作一个网站需要多少时间下载百度地图2022最新版
  • 做网站的优势有哪些app开发方式
  • 企业网站设计要点汽车网址大全软件下载
  • 西安商城网站建设咪豆做一个网站成本多少钱
  • 网站设计编辑铁岭做网站公司哪家好
  • 关键词免费网站网站数据库连接出错
  • 服务器怎样做网站呢网站设计 价格
  • python 微信网站开发什么浏览器适合看网站
  • 面试 / 答辩总卡壳?这款 AI 面试辅助新功能:上传专属资料,精准应答不翻车
  • [LangChain] 03. 缓存