同余数论

数论:同余相关

1. 基本定义与记号

  • 剩余类:模 \(n\) 同余的所有数构成的等价类被称为模 \(n\) 的剩余系。模 \(n\)\(i\) 的剩余类记作 \(K_i\)
  • 完全剩余系:从 \(n\) 个模 \(n\) 剩余系中各选一个数 \(a_0,a_1...a_{n-1}\),他们构成模 \(n\)完全剩余系
  • 简化剩余系:从与 \(n\) 互质的剩余类中各选一个数 \(a_1,a_2...a_k\)\(k=\varphi(n)\),简化剩余系又被称为 既约剩余系缩系
  • 质因子次数符号 \(v_{p}(n)\)
  • 各位数字之和符号 \(s_p(n)\) 表示 \(n\)\(p\) 进制下各位数字之和。

2.费马小定理

引理:\(p\in P\),其因子只有两个。因此,若两个数相乘是 \(p\) 的倍数,其中至少一个一定是 \(p\) 的倍数。

\(a\) 不是 \(p\) 的倍数时,不存在 \(x\ne y\),且 \(1\le x,y< p\) 使得 \(xa\equiv ya \pmod p\),因为引理告诉我们,\(x-y\)\(p\) 的倍数,与 \(1\le x,y<p\) 限制矛盾。

进一步,考虑 \(1\sim p-1\) 所有数,他们乘以 \(a\) 之后在模意义下互不相同,说明结果仍然是 \(1\sim p-1\) 所有数。

因此,\(\prod\limits_{i=1}^{p-1}i\equiv \prod\limits_{i=1}^{p-1} a i\pmod p\),又因为 \(\prod i\) 显然不是 \(p\) 的倍数,所以:

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

该结论称为 费马小定理,适用于 \(p\)质数,且 \(a\) 不是 \(p\) 的倍数的情形。即 \(a\perp p\)

3. 线性求逆元

1.求连续自然数的逆元

\(p=ki+r\),其中 \(p\) 是模数,将其表示为除以 \(i\) 的商和余数。有:

\[ki+r=0 \pmod p \]

左右同乘以 \(i^{-1}r^{-1}\),有:

\[kr^{-1}+i^{-1}\equiv 0\pmod p \\ i^{-1}\equiv -kr^{-1}\pmod p \\ i^{-1}\equiv -\lfloor\frac{p}{i}\rfloor\times (p\bmod i)^{-1}\pmod p \]

inv[1] = 1;
for(int i = 2; i < p; ++ i)
    inv[i] = (p - p / i) * inv[p % i] % p;

2.求连续阶乘的逆元

\[inv_{i+1}=\frac{1}{(i+1)!},inv_{i+1}\times(i+1)=inv_{i} \]

因此需要先 \(O(\log)\) 求出 \(n!\) 的逆元,然后逆推即可。

3.求任意n个数的逆元

与连续阶乘类似,先计算 \(n\) 个数的前缀积,记为 \(s_i\)\(O(n\log)\) 求得 \(s_n\) 的逆元,记作 \(sv_n\)。有递推式:

\[sv_{n-1}\equiv sv_{n}\times a_n \pmod p \\ inv_n\equiv sv_n*s_{n-1}\pmod p \]

4. 威尔逊定理

引理\(x^2\equiv 1\pmod p\) 当且仅当 \(x=\pm 1\)。同样用于二次剩余相关。

证明:使用平方差公式:\((x-1)(x+1)\equiv 0\pmod p\iff x=p-1,x=p+1\)

由于乘法逆元成对存在,这启发我们思考,\(1\sim p-1\) 所有数能否两两配对互为逆元,发现除了 \(\pm1\) 以外均可以,且这两个根据引理自我配对。

这说明了威尔逊定理: \((p-1)!\equiv -1 \pmod p\)。相当于不管 \(1\),只剩下一个 \(p-1\)。对于特殊情况 p=2 依然满足。

拓展:

\[(p ^ k!)_p \equiv \begin{cases} 1 & p = 2 \land k \geq 3 \\ -1 & {\rm otherwise}\end{cases} \]

用于 exLucas。

5.Legendre公式

问题:\(n!\) 中质因子 \(p\) 的指数,即 \(v_p(n!)\)。这对我们处理组合数很有用。

\[v_p(n!)=\sum_{i=1}^{\lfloor\log_p n\rfloor} \lfloor \frac{n}{p^i}\rfloor \\ =\dfrac {n - s_p(n)}{p - 1} \]

特别的,当 \(p=2\) 时,\(v_2(n)=n-popcount(n)\)

6.Kummer定理

7. 剩余系与环

结论:在长为 \(n\) 的环上每一步走 \(k\) 条边,形成的子环个数为 \(\gcd(n,k)\) 且环长为 \(\frac{n}{\gcd(n,k)}\)

感性理解:给环标号,走到的点模 \(\gcd(n,k)\) 一定相同,且可以证明一定能走到所有同剩余系的点。

8 拓展欧几里得算法

用于求解形如 \(ax+by=c\)二元线性不定方程

解的存在性:裴蜀定理 \(\gcd(a,b)|c\)

证明:左式一定是 \(\gcd(a,b)\) 的倍数,因此只需考虑 \(c'=c/\gcd(a,b)\) 的情形即可。即 \(a,b\) 均除以 \(\gcd\)。此时 \(a\perp b\)。只需证明 \(ax\bmod b\) 可以取得 \(0\sim p-1\) 的所有数,相当于费马小定理。

求解:

只需先求 \(ax+by=\gcd(a,b)\) 即可,再将解乘以 \(\frac{c}{\gcd}\)。根据裴蜀定理,解的存在性保证。

回忆辗转相除法的过程,我们用了关键结论:\(\gcd(a,b)=\gcd(b,a\bmod b)\)

\[ax_1+by_1=\gcd(a,b)\\ bx_2+(a-b\cdot\lfloor\frac{a}{b}\rfloor)y_2=\gcd(b,a\bmod b) \\ ax_1+by_1=(a-b\cdot\lfloor\frac{a}{b}\rfloor)y_2+bx_2 \\ x_1=y_2,y_1=x_2-\lfloor\frac{a}{b}\rfloor y_2 \]

注意,前后 \(x_1\ne x_2,y_1\ne y_2\)。但是 \(a,b,\gcd\) 是相同的。

值域限制:可以证明,直接求的特殊解一定有 \(|x|\le b,|y|\le a\)。因此不必再开大一个数据类型。

一般解的形式:

\(D=(a\Delta x)= (b\Delta y)\),有 \(a,b|D\),故 \(lcm(a,b)|D\)\(\Delta x=\frac{k \cdot lcm(a,b)}{a}=\frac{k\cdot b}{\gcd(a,b)}\)

\[\begin{cases} x = x_0 + \dfrac b \gcd k \\ y = y_0 - \dfrac a \gcd k \end{cases} \quad (k \in \Z) \]

应用:

  1. 求逆元:不要求 p 是质数,只需 a,p 互质。将其看做 \(ax+py=1\) 的最小正整数解 \(x\) 即可。
  2. 逆元个数:\(0\sim p-1\) 中有 \(\gcd(a,p)\)\(a\) 的逆元,显然只有在 \(p\) 不是质数时有多个逆元。
  3. \(a\perp b\),则 \(ax\bmod b\) 取遍 \(0\sim b-1\),这是比费马小定理强的结论。

9. 欧拉函数

定义:\([1,n]\) 中与 \(n\) 互质的个数记作 \(\varphi(n)\)\(\varphi(1)=1\)

性质 1:\(\varphi(p^k)=(p-1)\times p^{k-1}=p^{k-1}\varphi(p)\)

\(p\) 个数只有 \(kp\) 与它不互质,这也间接证明了积性。

性质2:\(\varphi(n)=n\prod\frac{p_i-1}{p_i}\)

将性质 1 与积性带入即可。

性质3:\(a|b\),那么 \(\varphi(ab)=a\cdot \varphi(b)\)

根据性质 2,\(b\) 中已经包含了 \(a\) 的所有质因子。应用于线性筛。

欧拉反演

\[\sum_{d|n}\varphi(d)=n\iff \varphi*I=id \]

证明:考虑枚举 \(\gcd(i,n)=d\),那么满足的 \(i\) 的充要条件是 \(i/d\perp n/d\),这样的 \(i\)\(\varphi(n/d)\) 种(得到的结果均再乘以 \(d\))。

欧拉定理

考虑 \(1\sim p-1\) 中与 \(p\) 互质的数,将其记作 \(c_1,c_2,\cdots ,c_{\varphi(n)}\),根据裴蜀定理,若 \(a\perp p\),则 \(ax\bmod p\) 取遍 \(0\sim p-1\)互不相同。因此,\(ac_1,ac_2,\cdots,ac_\varphi\) 仍然互不相同,且与 \(p\) 互质。因此两个集合是相同的,他们的乘积也相同。

\[\prod_{i=1}^{\varphi(n)} c_i\equiv\prod_{i=1}^{\varphi(n)} ac_i \pmod p \\ 1\equiv a^{\varphi(m)} \pmod p \]

扩展欧拉定理

\[a ^ b \equiv \begin{cases} a ^ {b\ \bmod\ \varphi(p)} & \gcd(a,p) = 1 \\ a ^ b & \gcd(a, p) \neq 1, b < \varphi(p) \\ a ^ {b\ \bmod\ \varphi(p) + \varphi(p)} & \gcd(a, p)\neq 1, b \geq \varphi(p) \end{cases} \pmod p \]

10. 离散对数

离散对数问题即在模意义下求 \(\log_ab=x\),这等价于:

\[a^x\equiv b\pmod p,a\perp p \]

考虑 Meet in the Middle,我们运用分块平衡思想,先大步求出 \(a^\sqrt n ,a^{2\sqrt n},\cdots,a^{k\sqrt n}\),并将他们的逆元作为下标扔进 map 里,注意到这里逆元不是瓶颈。即 Giant Step。

问题变为,找到一个 \(x\le \sqrt n\),使得 \(a^x\equiv c\),找到这样的 \(x\) 即可。即小步 Baby Step。复杂度 \(O(\sqrt p \log)\)

笑点解析:1. BSGS的B不是Big而是Baby,2.BSGS和大步小步是反着来的。

实际上,可以用哈希表做到 \(O(\sqrt p)\)。具体的,设 \(x=kB-r\),则有 \(a^{kB}\equiv b a^r\),这样就不需要求逆元了。

我们从小到大枚举指数,所以得到的是最小非负整数解。

\(\log_ab\) 实际上有循环节,循环节长度被称为阶ord

exBSGS

如果没有 \(a\perp p\),我们可以尝试将其凑成互质:将等式两边同时除以 \(d=\gcd(a,p)\),那么方程变为:

\[\frac{a}{d}a^{x-1}\equiv \frac{b}{d}\pmod{\frac{p}{d}} \]

\(d\not\mid b\) 则无解。

此时 \(\frac{a}{d},\frac{p}{d}\) 互质,但不一定是质数,因此需要 exgcd 求逆元。移项,方程变为 \(a^{x-1}\equiv \frac{b}{d}\times(\frac{a}{d})^{-1}\pmod {\frac{p}{d}}\)。若此时 \(a\perp \frac{p}{d}\),则直接使用 BSGS 求解,否则递归进行,直到互质。

注意:BSGS前每次递归操作,\(a\) 的指数都会减一,所以记录操作次数 \(t\),最终答案 \(x=x'+t\)

时间复杂度 \(O(\log^2+\sqrt p)\)

11. 阶与原根

\(n\) 的简化剩余系在模 \(n\) 乘法意义下封闭且构成群,满足封闭性和结合律,存在逆元和单位元。将群相关的定义应用在其上,得到阶和原根(循环群生成元)的概念。

阶的定义如下:使得 \(a^x\equiv 1\pmod m\)最小正整数 \(x\) 被称作 \(a\)\(m\) 的阶,记作 \(\delta_m(a)\)。即 \(\log_a 1\),换句话说,一个数自乘若干次,第一次得到 \(1\) 的自乘次数。与群论中ord的定义相同。

\(a\perp m\) 是存在 \(\delta_m(a)\) 的充要条件。

性质1:\(a^1,a^2,\cdots,a^{\delta_m(a)}\) 模意义下两两不同。

证明:\(a^i\equiv a^j\pmod m\),那么 \(a^{i-j}\equiv 1 \pmod m\) 与阶的最小性矛盾。

性质2:\(a^n\equiv 1\pmod m\),那么 \(\delta_m(a)|n\)

性质3:

\[\delta_m(ab)=\delta_m(a)\delta_m(b)\iff \gcd(\delta_m(a),\delta_m(b))=1 \]

性质4:

\[\delta_m(a^k)=\frac{\delta_m(a)}{\gcd(\delta_m(a),k)} \]

求阶:

  1. 使用 BSGS,复杂度 \(O(\sqrt m)\)
  2. 根据性质2,首先令 \(x=\varphi(m)\),对于 \(\varphi(m)\) 的每个质因子 \(p\)\(x\) 不断试除 \(p\) 直到无法整除。

原神

原根的定义如下:对于 \(m\in \N_+\)\(a\in\Z\),且 \(a\perp m\),若 \(\delta_m(a)=\varphi(m)\),则称 \(a\) 为模 \(m\) 的原根。

更直观的,\(a\) 是模 \(m\) 的原根,那么(欧拉定理):

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

且对于任意小于 \(\varphi(m)\) 的指数,都不满足。

并不是所有数都有原根,存在原根的模 \(m\) 既约剩余系同构与循环群,因为这一概念等价于循环群中的生成元。

原根的若干次幂在模意义下取遍了所有与 \(m\) 互质的数

原根判定定理:对于任意 \(\varphi(m)\) 的质因子 \(p\),均有 \(a^{\frac{\varphi(m)}{p}}\ne 1\)

原根存在定理:一个数存在原根的充要条件是 \(m=2,4,p^a,2p^a\),其中 \(p\)奇质数

原根个数定理:\(\varphi(\varphi(m))\)

最小原根大小:上界为 \(O(m^{0.25})\),实际大多会非常小,暴力枚举即可。

原根转加法

要求 \(ab\pmod m\),可以令 \(a=g^x,y=g^b\),那么就是 \(g^{x+y}\pmod m\)。相当于实数中的对数函数。

posted @ 2024-08-28 21:49  Apricity8211  阅读(34)  评论(0编辑  收藏  举报