整除与同余

整除得到了扩展,于是便成了同余。

整除

定义及性质

若整数\(b\)除以非零整数\(a\),商为整数,且余数为零,\(b\)为被除数,\(a\)为除数,即\(a|b\)(“|”是整除符号),读作“\(a\)整除\(b\)”或“\(b\)能被\(a\)整除”。\(a\)叫做\(b\)的约数(或因数),\(b\)叫做\(a\)的倍数。整除属于除尽的一种特殊情况。

①若\(b|a\)\(c|a\),且\(b\)\(c\)互质,则\(bc|a\)
②对任意非零整数\(a\)\(±a|a=±1\)
③若\(a|b\)\(b|a\),则\(|a|=|b|\)
④如果\(a\)能被\(b\)整除,\(c\)是任意整数,那么积\(ac\)也能被\(b\)整除。
⑤对任意整数\(a,b>0\),存在唯一的数对\(q,r\),使\(a=bq+r\),其中\(0 ≤ r < b\)带余除法定理,是整除理论的基础。
⑥若\(c|a\)\(c|b\),则称\(c\)\(a,b\)的公因数。若\(d\)\(a,b\)的公因数,\(d≥0\),且\(d\)可被\(a,b\)的任意公因数整除,则\(d\)\(a,b\)的最大公因数。若\(a,b\)的最大公因数等于\(1\),则称\(a,b\)互素,也称互质。累次利用带余除法可以求出\(a,b\)的最大公因数,这种方法常称为辗转相除法。又称欧几里得算法
(百度百科)

欧几里德算法

用来求最大公因数(gcd),又称辗转相除法。
给定 \(a,b\in N\) ,有 \(\gcd(a,b)=\gcd(b,a\ \%\ b)\ (a\geq b)\) ,利用这个性质一直递归下去,直到 \(b'=0\) ,于是 \(a'\) 就是 \(a,b\) 的 gcd 了,因为 \(\gcd(a,0)=a\)

裴蜀定理

\(\forall a,b \in Z\) ,一定有一组整数解使得 \(ax+by=\gcd(a,b)\)
\(ax+by=\gcd(a,b)\) 有解 $\ \ \Leftrightarrow\ \ $ \(ax+by=m\ \ (\gcd(a,b)|m)\) 有解。
证明

扩展欧几里德算法(exgcd)

扩展欧几里得的用途
  1. 判断方程\(ax+by=m\)是否有解
  2. \(ax+by=m\)的任意一组解、通解、最小整数解
  3. 求逆元

我们现在需要求解方程 \(ax+by=\gcd(a,b)\)
首先 \(b=0\) 时显然有解 \(x=1,y=0\)
再来看 \(\gcd(a,b)=\gcd(b,a\ \%\ b)\) ,把 \(a\ \%\ b\) 拆开:

\[\gcd(a,b)=\gcd(b,a-\lfloor\frac{a}{b}\rfloor b) \]

再加入一点裴蜀定理:

\[\begin{aligned} ax+by &= \gcd(a,b) \\ &= \gcd(b,a-\lfloor\frac{a}{b}\rfloor b) \\ &= bx_0+(a-\lfloor\frac{a}{b}\rfloor b)y_0 \\ &= ay_0+b(x_0-\lfloor\frac{a}{b}\rfloor y_0) \\ \end{aligned} \]

\[\Rightarrow \begin{cases} x = y_0 \\ y = x_0-\lfloor\dfrac{a}{b}\rfloor y_0 \\ \end{cases} \]

我们发现 \(x,y\) 能递归向下求解,由辗转相除性质可知,总能递归到 \(b=0\) 的情况。
于是我们得到了方程 \(ax+by=\gcd(a,b)\) 的一组解。
这个解保证 \(|x|+|y|\) 最小。

现在来讲讲如何把这一过程作用在具体用途上:

  1. 判断方程\(ax+by=m\)是否有解:
    由裴蜀定理的充要性可知,若 \(\gcd(a,b)|m\) ,则方程一定有解,反之一定无解。

  2. \(ax+by=m\)的任意一组解、通解、最小整数解:
    首先保证 \(\gcd(a,b)|m\) ,求出 \(ax+by=\gcd(a,b)\) 的解再同乘即可。

  3. 求逆元:
    重中之重,吊打费马小求逆元。
    众所周知,使用费马小定理 \(a^{p-2}\equiv\dfrac{1}{a} \mod p\) 有两点限制: \(a \bot p\ ,\ p \in prime\)
    扩展欧几里德求逆元只有一条限制:$a \bot p\ $。

    要求 \(a\) 在模 \(p\) 意义下的逆元 \(b\) ,有:
    \(\begin{aligned} &\ \ \ \ \ \ \frac{1}{a} \equiv b \mod p \\ &\Rightarrow ab \equiv 1 \mod p \\ &\Rightarrow ab = 1 + px \\ &\Rightarrow ab + (-p)x = 1 \\ \end{aligned}\)

    使用扩欧求解 \(b\) 即可。

同余

定义同余符号为 \(\equiv\)\(a \equiv b \mod m\) 表示式子两边在模 \(m\) 意义下相等,也称在模 \(m\) 意义下同余。

同余公式(性质)

1.公式一

\[\left.\begin{array}{l} a_{1} \equiv b_{1} \\ a_{2} \equiv b_{2} \end{array}\right\} \;\Rightarrow\; \left\{\begin{array}{l} a_{1}+a_{2} \equiv b_{1}+b_{2} \\ a_{1}-a_{2} \equiv b_{1}-b_{2} \\ a_{1} \times a_{2} \equiv b_{1} \times b_{2} \end{array}\right. \mod m \]

2.公式二\(\forall k \in Z\)

\[a \equiv b \;\Rightarrow\; a+k \equiv b+k \mod m \]

3.公式三\(\forall k \in Z\)

\[a \equiv b \;\Rightarrow\; ak \equiv bk \mod m \]

  • 逆向不一定成立,具体见公式六。

4.公式四\(\forall k \in Z\)

\[a \equiv b \;\Rightarrow\; a^k \equiv b^k \mod m \]

5.公式五\(f(x)\) 是整系数多项式)

\[a \equiv b \;\Rightarrow\; f(a) \equiv f(b) \mod m \]

6.公式六\(k \bot m\)

\[ak \equiv bk \;\Rightarrow\; a \equiv b \mod m \]

涉及到变化 \(m\) 的公式:
7.公式七

\[\left.\begin{array}{l} d \mid a,b,m \\ a \equiv b \mod m \\ \end{array}\right\} \;\Rightarrow\; \frac{a}{d} \equiv \frac{b}{d} \mod \frac{m}{d} \]

  • 逆向就是三者同乘任意正整数,亦成立
  • 由这个公式和公式三可以推出公式六的一般形态:

    \[\left.\begin{array}{l} \gcd(k,m) = d \\ ak \equiv bk \\ \end{array}\right\} \;\Rightarrow\; a \equiv b \mod \frac{m}{d} \]

8.公式八

\[\left.\begin{array}{l} d \mid m \\ a \equiv b \mod m \\ \end{array}\right\} \;\Rightarrow\; a \equiv b \mod d \]

  • 这实际上是群论的一个推论 ,\(\mathbb{Z_d}\) 构成了 \(\mathbb{Z_m}\) 的一个子群。
  • 逆向不一定成立,显然当 \(d=1\)\(a \equiv b \mod d\) 恒成立。
  • 这条公式等效于:

    \[a \equiv b \mod nm \;\Rightarrow\; \left\{\begin{array}{l} a \equiv b \mod n \\ a \equiv b \mod m \\ \end{array}\right. \]

  • 逆向需要互质,见下一条性质

9.公式九

\[\left.\begin{array}{l} a \equiv b \mod n \\ a \equiv b \mod m \\ n\bot m \\ \end{array}\right\} \;\Rightarrow\; a \equiv b \mod nm \]

  • 更完整的形态(无需互质)

\[\left.\begin{array}{l} a \equiv b \mod n \\ a \equiv b \mod m \\ \end{array}\right\} \;\Rightarrow\; a \equiv b \mod [n,m] \]

费马小定理

\(p \in prime\ ,\ a \bot p\)

\[a^{p-1} \equiv 1 \mod p \]

欧拉定理

\(a \bot m\)

\[a^{\varphi(m)} \equiv 1 \mod m \]

证明:
\(x_1,x_2...x_{\varphi(m)}\) 是模 \(m\) 的简化剩余系,那 \(ax_1,ax_2...ax_{\varphi(m)}\) 也是模 \(m\) 的简化剩余系。
因为 \(\gcd(a,m)=1\)\(ax_{1}ax_{2}...ax_{\varphi(m)} \equiv x_{1}x_{2}...x_{\varphi(m)} \mod m\) ,所以欧拉定理成立。

可以发现费马小定理是欧拉定理的一种特殊情况。

扩展欧拉定理

\[a^b \equiv \left\{\begin{array}{ll} a^{b \bmod \varphi(m)}, &\gcd(a,m)=1, \\ a^b, &\gcd(a,m) \neq 1, b < \varphi(m), \\ a^{(b \bmod \varphi(m))+\varphi(m)}, &\gcd(a,m) \neq 1, b \geq \varphi(m). \\ \end{array}\right. \mod m \]

证明:OI-Wiki

值得注意的是,无论是费马小定理,还是(扩展)欧拉定理,一个很重要的应用就是降幂,从而将不可能的表达式化为可能。

乘法逆元

\(\dfrac{1}{a} = b \mod m\) ,则 \(b\) 称为 \(a\) 在模 \(m\) 意义下的乘法逆元,又记作 \(a^{-1}(\bmod\ m)\)
注意,只有当 \(\gcd(a,m)=1\)\(a\) 才有逆元。

费马小求逆元
\(a\ \bot\ p\ ,\ p \in prime\)

\[a^{p-1} \equiv 1 \;\Rightarrow\; a^{p-2} \equiv \frac{1}{a} \mod p \]

扩展欧几里德求逆元
\(a\ \bot\ m\)
扩展欧几里德(exgcd)

欧拉定理求逆元
\(a\ \bot\ m\)

\[a^{\varphi(m)} \equiv 1 \;\Rightarrow\; a^{\varphi(m)-1} \equiv \frac{1}{a} \mod m \]

线性求逆元
线性递推,当递推到 \(i\) 时,设 \(k = \lfloor\dfrac{p}{i}\rfloor\)\(j = p \mod i\)
则 $$p = k \times i + j$$

\[k \times i + j \equiv 0 \mod p \]

两边同乘 \(i^{-1} \times j^{-1}\)

\[k \times j^{-1} + i^{-1} \equiv 0 \mod p \]

\[i^{-1} \equiv -k \times j^{-1} \]

所以递推式可写为 \(inv(i) = (-\dfrac{p}{i}+p) \times inv(j) \bmod p\)

线性同余方程组(中国剩余定理/CRT)

求解:

\[\left\{\begin{array}{l} x \equiv a_1 \mod m_1 \\ x \equiv a_2 \mod m_2 \\ ... \\ x \equiv a_n \mod m_n \\ \end{array}\right. \]

中国剩余定理
要求模数互质。

设:
\(m\)\(m_1 \sim m_n\) 的乘积,

\(b_i = \dfrac{m}{m_i}\)

\(c_i = b_{i}(b_i^{-1}\ \bmod\ m_i)\) (外层不对 \(m_i\) 取模)。

\(x\) 有最小解:

\[x = \sum_{i=1}^{n}a_{i}c_{i} \bmod m \]

下面给出证明:
我们要求上面式子求出来的 \(x\) 对于任意 \(i \in [1,n]\) 都满足 \(x \equiv a_i \mod m_i\) 成立。
那么我们对于任意 \(i\) 对答案式进行验证:
首先,设 \(j \neq i\) ,则 \(c_j \equiv b_j \equiv \dfrac{m}{m_i} \equiv 0 \mod m_i\)
然后我们可以发现答案式在模 \(m_i\) 意义下可以化成原式:

\[\begin{aligned} x &= \sum_{j=1}^{n}a_{j}c_{j} \mod m_i \\ &= a_{i} \times b_{i} \times (b_{i}^{-1}\ \bmod\ m_i) \mod m_i \\ &= a_i \times 1 \mod m_i \\ &= a_i \mod m_i \\ \end{aligned} \]

由此,答案式正确性得以证明(从中我们可以发现答案式其实就是一个构造)。

扩展中国剩余定理
不要求模数互质。

CRT无法应对模不互质的情况。这个缺陷是在于CRT的核心思想,给它动小手术是没有用的。我们想找到解模不互质方程组的办法,就必须完全跳出CRT的窠臼。
——阮行止

对于解模数不互质的线性同余方程组问题,扩展中国剩余定理给出了可行的解法,
那就是将两个线性同余方程合并成一个完全等价的方程,最终化方程组为单个方程求解。
设现在有两个方程:

\[\left\{\begin{array}{l} x \equiv a_1 \mod m_1 \\ x \equiv a_2 \mod m_2 \\ \end{array}\right. \]

写成等式

\[x\ =\ a_1 + p_1 m_1\ =\ a_2 + p_2 m_2 \]

移个项

\[p_1 m_1 - p_2 m_2\ =\ a_2 - a_1 \]

这样我们就可以用 exgcd 求出一组 \(p_1,p_2\) 的解(或报告无解),获得了在这组解下的 \(x\)(这里我们称之为 \(p\)),从而求得 \(x\) 所在的等价类(模 \(lcm(m_1,m_2)\) 意义下),于是俩方程式可以合并成:

\[x \equiv p \mod lcm(m_1,m_2) \]

对于这里为什么是模 \(lcm(m_1,m_2)\) 意义下,以及为什么解所在的等价类唯一(就是上面\(p\)所在的等价类),这里引用阮行止的证明

【定理】若有特解 \(x^{*}\) ,那么 \(\left\{\begin{array}{l}x \equiv r_{1}\left(\bmod m_{1}\right) \\ x \equiv r_{2}\left(\bmod m_{2}\right)\end{array}\right.\) 的通解是: \(x^{*}+k \cdot \operatorname{lcm}\left(m_{1}, m_{2}\right)\) ,亦即

\[x \equiv x^{*} \quad\left(\bmod \operatorname{lcm}\left(m_{1}, m_{2}\right)\right) \]

从线性代数的角度讲,这个通解的构造方式是十分平凡的。对 \(\operatorname{lcm}\left(m_{1}, m_{2}\right)\) 取模的结果,将整个整数集划分成了 \(\operatorname{lcm}\left(m_{1}, m_{2}\right)\) 个等价类,哪个等价类里面有特解,那整个等价类肯定全都是解。一人得道,鸡犬升天。接下来唯一需要说明的事情就是:为什么任意一个完全剩余系里面,只会有一个解?这个问题等价于:为什么 \(0,1,2, \cdots, \operatorname{lcm}\left(m_{1}, m_{2}\right)\) 里面,只有一个解?

证明解的唯一性,常常采用这样一种手段:假设 \(x, y\) 都是原问题的解,然后经过一系列推理,得到 \(x=y\) ,于是解的唯一性就不言而喻了。我们也采用这种手段来解决唯一性问题。设上述集合里面有 \(0 \leq x, y \leq \operatorname{lcm}\left(m_{1}, m_{2}\right)\) 满足

\[\left\{\begin{array}{l} x \equiv a_{1}\left(\bmod m_{1}\right) \\ x \equiv a_{2}\left(\bmod m_{2}\right) \end{array},\left\{\begin{array}{l} y \equiv a_{1}\left(\bmod m_{1}\right) \\ y \equiv a_{2}\left(\bmod m_{2}\right) \end{array}\right.\right. \]

不妨设 \(x \geq y\) .那立刻就可以发现

\[\left\{\left.\begin{array}{l} (x-y) \bmod m_{1}=0 \\ (x-y) \bmod m_{2}=0 \end{array} \quad \Rightarrow \quad \operatorname{lcm}\left(m_{1}, m_{2}\right) \right\rvert\,(x-y)\right. \]

\(x, y\) 都是小于 \(\operatorname{lcm}\left(m_{1}, m_{2}\right)\) 的数,它们的差也必然要小于 \(\operatorname{lcm}\left(m_{1}, m_{2}\right)\) .但 \((x-y)\) 又要被 \(\operatorname{lcm}\left(m_{1}, m_{2}\right)\) 整除,那怎么办?只有 \(x-y=0\) ,也就是 \(x=y\) .到此为止,我们证明了:一个完全剩余系中,有且仅有一个解。以上就是整个 exCRT 算法的全部数学基础。

或者感性理解一下,有 \(a \equiv b \mod m \;\Rightarrow\; \forall d \mid m\ ,\ a \equiv b \mod d\) ,由此 \(\bmod\ lcm(m_1,m_2)\) 可一同时满足 \(\bmod\ m_1\)\(\bmod\ m_2\) 的性质。

离散对数

\(g\) 为模数 \(m\) 的一个原根。
则有唯一的 \(0 \leq k < \varphi(m)\) 使得:

\[g^k \equiv a \mod m \]

有时候我们已知 \(g,a,m\) ,需要求 \(k\) ,这就是离散对数问题。
这里我们记 \(k = \operatorname{ind}_{g}a \mod m\)
离散对数 \(ind\) 和普通对数一样也有着很多优美性质:

  • \(\operatorname{ind}_{g}ab = \operatorname{ind}_{g}a\ +\ \operatorname{ind}_{d}b\)

  • \(\operatorname{ind}_{g}a^b = b \times \operatorname{ind}_{g}a\)

  • \(g_1\)\(m\) 的另一原根:\(\operatorname{ind}_{g}a = \dfrac{\operatorname{ind}_{g_1}a}{\operatorname{ind}_{g_1}g} \;\Rightarrow\; \operatorname{ind}_{g_1}a = \operatorname{ind}_{g}a \times \operatorname{ind}_{g_1}g\)

求取离散对数,大步小步算法(BSGS)可以在 \(O(\sqrt m)\) 的时间复杂度内完成。

大步小步算法(BSGS)
\(a \bot m\)
先考虑朴素算法:暴力枚举指数。
由欧拉定理我们可以知道 \(a^x \equiv b \mod m\) 可以降次到 \(a^{x \bmod\ \varphi(m)} \equiv b \mod m\)
由此枚举范围可以降到 \(x \in [0,m-1)\) ,但这还远远不够,于是我们把枚举范围分成 \(\sqrt m\) 大块,每个大块里有 \(\sqrt m\) 小块(这里的 \(\sqrt m\) 向上取整),这样 \(x\) 就可以写成 \(A \sqrt m - B\)\(A \in [1,\sqrt m]\ ,B \in [0,\sqrt m)\))。
代入式子:

\[\begin{aligned} a^{A \sqrt m - B} &\equiv b &\mod m \\ a^{A \sqrt m} &\equiv b \cdot a^B &\mod m \\ \end{aligned} \]

这时候我们已经将 \(A,B\) 抽离开了,也就是 \(A,B\) 之间互不影响,那么就可以先计算出 \(b \cdot a^B\) 的所有可能值塞进 \(\operatorname{map}/\operatorname{hash}\) 里面,再枚举左端的 \(A\) ,若有 \(A\) 使得 \(\exist B\) 使原式成立,那么就得到了一个可行解 \(x = A \sqrt m - B\) ,若没有则报告无解。
注意,由于 \(A\) 的系数 \(\sqrt m\) 大于 \(B\) 的值域 ,所以第一次求得的可行解即最小解。

扩展大步小步算法(exBSGS)
无限制。
由于 BSGS 中有用到乘法逆元,无法应对 \(a,m\) 不互质的情况,所以我们考虑把他们变成互质的。
\(d = \gcd(a,m)\) ,由同余方程公式八,原式可化为:

\[a^x \equiv b \mod \frac{m}{d} \]

但此时 \(a\) 仍然不一定与 \(\dfrac{m}{d}\) 互质,因为 \(a\) 中存在的公因子在 \(m\) 里可能存在多个,那么就需要重复上面的操作直到 \(a\ \bot\ \dfrac{m}{d_1 d_2 ...}\) 为止,这样我们就可以愉快地使用 BSGS 求解啦。

题单

整除与同余

参考资料

posted @   EcapsXD  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示