「学习笔记」同余问题
一.基本概念
\(1.\) \(a|b\):\(a\) 能整除 \(b\),即 \(b \bmod a = 0\)。
\(2.\) \(a\equiv b(\bmod m)\): \(a\) 与 \(b\) 在模 \(m\) 的意义下同余,即 \(a\bmod m = b \bmod m\)。
\(3.\) \(\varphi(n)\):欧拉函数,表示 \([1,n]\) 中与 \(n\) 互质的数的个数。
二.同余
-
1.整除与同余的关系
(1):\(a\equiv b(\bmod m)\) 当且仅当 \(m|(a-b)\)。
(2):\(a\equiv b(\bmod m)\) 当且仅当 \(a=b+k×m\)。 -
2.同余的性质
对于整数 \(a,b,c\) 以及自然数 \(m,n\),有:
(1)自反性:\(a\equiv a(\bmod m)\)。
(2)对称性:若 \(a\equiv b(\bmod m)\),那么 \(b\equiv a(\bmod m)\)。
(3)传递性:若 \(a\equiv b(\bmod m)\)、\(b\equiv c(\bmod m)\),那么 \(a\equiv c(\bmod m)\),
(4)同加性:若 \(a\equiv b(\bmod m)\),那么 \(a + c\equiv b + c(\bmod m)\)。
(5)同乘性:若 \(a\equiv b(\bmod m)\),那么 \(ac\equiv bc(\bmod m)\)。
(6)同幂性:若 \(a\equiv b(\bmod m)\),那么 \(a^n\equiv b^n(\bmod m)\)。
(7)若 \(a\equiv b(\bmod p)\)、\(a\equiv b(\bmod q)\),那么 \(a\equiv b(\bmod pq)\)。 -
3.相关定理
- 费马小定理:
若 \(p\) 为质数,则对于任意整数 \(a\),有 \(a^p\equiv a(\bmod p)\)。 - 费马小定理的推论:
当 \(p\) 为质数且 \(p\nmid a\) 时,\(a^{p-1}\equiv 1(\bmod p)\)。 - 欧拉定理:
当 \(\gcd(a, n)=1\) 时,\(a^{\varphi(n)}\equiv 1(\bmod n)\)。 - 欧拉定理的推论:
若 \(\gcd(a, n)=1\),则 \(a^b\equiv a^{b\bmod \varphi(n)}(\bmod n)\).
- 费马小定理:
三.欧拉函数
(1) 设 \(n=p^k\),其中 \(n,k\) 为正整数,\(p\) 为质数,则有 \(\varphi (n)=p^k-p^{k-1}\)。
(2) 设 \(n,m\) 为正整数,且 \(\gcd(n,m)=1\),则有 \(\varphi(nm)=\varphi(n)×\varphi(m)\)。
(3) 设 \(N = \Pi _{i=1}^{n} p_i^{k_i}\),其中 \(p\) 为质数,那么 \(\varphi(N)=N×\Pi _{i=1}^{n}(1-\frac{1}{p_i})\)。
四.扩展欧几里得算法
-
\(1\).前置算法:欧几里得算法。
-
\(2\).相关定理:
裴蜀定理:对于任意整数 \(a,b\),存在一对整数 \(x,y\),满足 \(ax+by=\gcd(a,b)\)。证明:当欧几里得算法到最后一步时,也就是 \(b=0\) 时,对于 \(ax+by=\gcd(a,b)\) 肯定有一组解 \(\begin{cases}x=1\\ y=0\end{cases}\)。
当 \(b>0\) 时,设上一个方程 \(bx+(a\bmod b)y = \gcd(b,a\bmod b)\) 的解为 \(\begin{cases}x=x'\\ y=y'\end{cases}\),那么方程可以变形为 \(bx'+ay'- \lfloor \frac{a}{b} \rfloor by'=ay'+b(x'-\lfloor \frac{a}{b} \rfloor y')=\gcd(a,b)\)。
那么此时,\(\begin{cases}x=y'\\ y=x'-\lfloor \frac{a}{b} \rfloor y'\end{cases}\) 就是一组解。
-
\(3\).算法介绍:与上文裴蜀定理的证明相似,我们可以利用欧几里得算法求出方程 \(ax+by=\gcd(x,y)\) 的解,这称为扩展欧几里得算法。
五.线性同余方程
-
\(1.\) 前置算法:扩展欧几里得算法。
-
\(2.\) 相关概念:
同余方程:形如 \(ax\equiv c(\bmod b)\),\(a,b,c\) 为整数的方程。 -
\(3.\) 解法:
对于 \(ax\equiv c(\bmod b)\),我们可以转化为 \(ax+by=c\)。只考虑 \(c>\gcd(a,b)\) 的情况,设方程 \(ax+by=c'\) 有一组整数解 \(\begin{cases}x=x'\\ y=y'\end{cases}\)。如果 \(c'|c\),那么这个方程一定有一组解 \(\begin{cases}x=x' * \frac{c}{c'}\\ y=y' * \frac{c}{c'}\end{cases}\)。
根据裴蜀定理,我们可知 \(ax+by=\gcd(a,b)\) 一定有一组整数解。所以对于满足 \(\gcd(a,b)|c\) 时, \(ax\equiv c(\bmod b)\) 的一组整数解为 \(\begin{cases}x=x' * \frac{c}{\gcd(a,b)}\\ y=y' * \frac{c}{\gcd(a,b)}\end{cases}\).
接下来继续探讨一下,当已知 \(ax\equiv c(\bmod b)\) 的一组解时,能否可以得出它的其它解?
假设已知 \(x=x_0\),那么该方程在模 \(b\) 的意义下,一定有 \(\gcd(a,b)\) 个不同的解,其中 \(x_i=(x_0+i*\frac{b}{(\gcd(a,b))}) \bmod b\),证明略。
-
\(4.\) 例题讲解
Ybtoj【例题1】同余方程
P1082 [NOIP2012 提高组] 同余方程
这是一道线性同余方程的模板题。
可以直接用扩展欧几里得算法求出方程 \(ax\equiv 1(\bmod b)\) 的一个解。
但是题目还要求找出最小正整数值,我们思考一下怎么求。
因为题目保证有解,那么 \(\gcd(a,b)=1\),所以我们这个时候求出的解在模 \(b\) 的意义下是唯一的!
但是最后要注意,有可能得到负数解,取模的时候要处理一下。
核心代码如下:
void exgcd (int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; return ; } exgcd (b, a % b, y, x); y -= a / b * x; } cout << (x % b + b) % b;
六.乘法逆元
-
\(1.\) 相关概念:
乘法逆元:若 \(b,p\) 互质,且 \(b|a\),则存在一个整数 \(x\) 使 \(\frac{a}{b} \equiv ax(\bmod p)\)。我们称 \(x\) 为 \(b\) 在模 \(p\) 意义下的乘法逆元,记作 \(b^{-1}\)。 -
\(2.\) 前置知识:费马小定理,线性同余方程。
-
\(3.\) 求法:根据 \(\frac{a}{b} \equiv ab^{-1}(\bmod p)\),可以得到 \(bb^{-1}\equiv 1(\bmod p)\)。先考虑一些特殊情况:当 \(p\) 为质数时,由费马小定理得: \(b^{p-1}\equiv 1(\bmod p)\),即 \(b×b^{p-2}\equiv 1 (\bmod p)\),此时可以得到 \(b^{-1}\equiv b^{p-2}(\bmod p)\)。于是我们得到特殊情况求逆元的方法。
非特殊情况我们使用线性同余方程的知识解决即可。
-
\(4.\) 例题讲解:
Ybtoj【例题2】约数之和
设 \(A=p_1^{k_1}*p_2^{k_2}…*p_n^{k_n}\),其中 \(p\) 为质数,那么 \(A^B=p_1^{Bk_i}*p_2^{Bk_2}…*p_n^{Bk_n}\)。
已知 \(A^B\) 的约数和为 \(\Pi _{i=1}^{n}(\sum ^{Bk_{i}}_{j=0}p_{i}^j)\),根据等比数列求和公式可得 \(\Pi _{i=1}^{n}(\sum ^{Bk_{i}}_{j=0}p_{i}^j) = \Pi _{i=1}^{n}(\frac{p_i^{Bk_i+1}-1}{p_i-1})\),此时我们可以用快速幂求出分子的值。
对于分母,因为 \(9901\) 为质数,所以当 \(p_i-1\) 与 \(9901\) 互质时,直接求出 \(p_i-1\) 在模 \(9901\) 意义下的乘法逆元。当 \(p_i-1\) 与 \(9901\) 不互质时,此时 \(\sum ^{Bk_{i}}_{j=0}p_{i}^j\) 的结果模 \(9901\) 后结果为 \(bk_i+1\)。
Ybtoj【例题3】线性求逆元
P3811 【模板】乘法逆元
假设已经求出 \([1,i-1]\) 的乘法逆元,设 \(p=\lfloor \frac{p}{i} \rfloor * i + r\),那么式子同时乘 \(i^{-1}r^{-1}\) ,可以得到 \(i^{-1}\equiv -r^{-1}*\lfloor \frac{p}{i}\rfloor (\bmod p)\),就可以做出来了。
七.中国剩余定理
-
\(1.\) 前置算法:扩展欧几里得算法。
-
\(2.\) 相关定理:
(1) 中国剩余定理:若 \(m_1,m_2,……,m_n\) 满足两两互质,\(M=\Pi _{i=1}^{n}m_{i}\),\(M_i=\frac{M}{m_i}\), \(t_i\) 满足 \(t_i M_i \equiv 1(\bmod m_i)\)。对于任意的 \(n\) 个整数 \(a_1,a_2,……,a_n\),方程组 \(\begin{cases}x\equiv a1\left( \bmod m_{1}\right) \\ x\equiv a_{2}\left( \bmod m_{2}\right) \\……\\ x\equiv a_{n}\left (\bmod m_n\right) \end{cases}\) 必定有整数解,其中有一个解为 \(\sum ^{n}_{i=1} a_i M_i t_i\),且在模 \(M\) 的意义下有唯一解。 -
\(3.\) 例题讲解:
Ybtoj【例题4】中国剩余定理
P1495 【模板】中国剩余定理(CRT)/曹冲养猪
根据上文写到的公式,求出答案即可。