扩展欧几里得算法学习笔记

好吧,其实根本不是学习笔记。只是刚刚给人解答问题时,写了下面的 \(\LaTeX\) ,觉得我自己写得很好很正确就干脆贴上来了。

首先你要会欧几里得算法:\(\gcd(x, y) = \gcd(y, x \bmod y)\)

然后扩欧就是在此基础上顺便去解一个不定方程

假设我们要求 \(ax + by = \gcd(x, y)\)(已知 \(a, b\)

而我们通过递归的方式,已经求出了 \(a0\cdot y + b0 \cdot (x \bmod y) = \gcd(x, y)\)

那么直接化简这个玩意即可:

\(x \bmod y = x - \left\lfloor\dfrac{x}{y}\right\rfloor \cdot y\)

然后代入进上面的式子

\(a0\cdot y + b0 \cdot (x - \left\lfloor\dfrac{x}{y}\right\rfloor \cdot y) = \gcd(x, y)\)

\(\therefore a0 \cdot y + b0 \cdot x - b0 \cdot \left\lfloor\dfrac{x}{y}\right\rfloor \cdot y = \gcd(x, y)\)

然后再提取公因式

\(b0 \cdot x + (a0 - b0 \cdot \left\lfloor\dfrac{x}{y}\right\rfloor )\cdot y = \gcd(x, y)\)

然后就没了,所以 $a = b0, b = a0 - b0 \cdot \left\lfloor\dfrac{x}{y}\right\rfloor $

然后再特判一下边界就行,可以自己去模版题看代码

这个不是学习笔记,但是他确实是属于学习笔记。

posted @ 2023-01-01 19:24  liangbowen  阅读(18)  评论(0编辑  收藏  举报