基础数论学习笔记
初等数论学习笔记
0.0 相关定义
- 记 \(a \mid b\) 表示 \(a\) 为 \(b\) 的因数,即 \(a\) 整除 \(b\),类似的,记 \(a \nmid b\) 为 \(a\) 不整除 \(b\)。
- 记 \(a \perp b\) 表示 \(a\) 与 \(b\) 互质。\(1\) 和任何数都互质,任何数和它自己都不互质,特别地,\(1\) 和 \(1\) 互质。
- 若模 \(p\) 意义下有 \(ax \equiv 1 \pmod p\),则 \(x\) 为 \(a\) 模 \(p\) 意义下的乘法逆元。记 \(a\) 的乘法逆元为 \(a^{-1}\)。
- 记 \(\mathbb{P}\) 为质数集。
- 没有冲突的情况下,记 \((i,j)\) 表示 \(\gcd(i,j)\)。
- 对于若干整数 \(a_1,a_2,...,a_{p-1}\),若满足 \(\forall x,\exists a_i \equiv x \pmod p\),则称这 \(p-1\) 个整数为模 \(p\) 的完全剩余系。
- 对于若干整数 \(a_1,a_2,...,a_{\varphi(p)}\),若满足 \(\forall i,a_i \perp p\) 且 \(a_i\) 在模 \(p\) 意义下互不相同,则称这 \(\varphi(p)\) 个整数为模 \(p\) 的简化剩余系。
- 设 \(v_k(p)\) 表示 \(p\) 之中质因子 \(k\) 的个数。
1. 质数
1.1 性质
- 质数的分布比较稀疏,当 \(N\) 足够大时,\(N\) 以内的质数约有 \(\dfrac{N}{\ln N}\) 个。
1.2 线性筛质数
考虑对于每个数把它的倍数都打上标记,对于一个数,只需保证其只会被其最小的质因子打标记即可。
2. 费马小定理
2.1 形式
若满足 \(p \in \mathbb{P},p \nmid a\),则:
2.2 证明
引理 1
对于模 \(p\) 的完全剩余系 \(K\),若 \(p \nmid a\),那么模 \(p\) 意义下这些数乘 \(a\) 后互不相同。
考虑如果这样的单射关系成立,那么其等价于不存在 \(x<y,x \in K,y \in K\) 满足 \(ax \equiv ay \pmod p\)。
将上面的式子移项,得到 \(a(y-x) \equiv 0 \pmod p\),由于 \(p \nmid a\) 且 \(p \in \mathbb{P}\),那么只有 \(p \mid (y-x)\),即 \(x \equiv y \pmod p\) 时式子成立。但根据完全剩余系的定义这显然不成立,由此得证。
考虑若引理成立,而余数为 \(0\) 的一项显然是独立的,那么有:
消去相同部分即可得到费马小定理:
3. 欧拉函数
3.1 定义
欧拉函数,即 \(\varphi(n)\),表示 \([1,n]\) 内与 \(n\) 互质的数的个数。
3.2 性质
性质一:若 \(n \in \mathbb{P}\),则 \(\varphi(n)=n-1\)。
性质二:若 \(n \in \mathbb{P}\),则 \(\varphi(n^k) = (n-1)n^{k-1} = \frac{n-1}{n} \times n^k\)。
证明:显然此时只有 \(n\) 的倍数不与 \(n^k\) 互质。
性质三:欧拉函数是积性函数。即若 \(a \perp b\),则 \(\varphi(ab)=\varphi(a) \times \varphi(b)\)。
证明:令 \([1,a]\) 以内与 \(a\) 互质的数为 \(a_1,a_2,...,a_{\varphi(a)}\)。考虑 \([1,ab]\) 之内所有与 \(a\) 互质的数就一定都是形如 \(ia + a_j(i \in [0,b-1],j \in [1,\varphi(a)])\) 的形式。对于每一个 \(j\) 单独考虑,由于 \(a \perp b\),所有根据引理 \(1\),所有的 \(ia\) 共同构成了模 \(b\) 的完全剩余系,那么自然所有的 \(ia + a_j\) 同样构成了模 \(b\) 的完全剩余系。
引理 2
若 \(a \perp b\),则 \(kb+a \perp b\)。
证明:设两侧最大公因数为 \(G\)。显然有 \(G=1\)。命题成立。
根据引理 \(2\),对于一个 \(a_j\),所有的 \(ia + a_j\) 中模 \(b\) 的余数有多少个和 \(b\) 互质,就有多少个数与 \(b\) 互质。这个数量根据定义能看出就是 \(\varphi(b)\)。即对于每个 \(a_j\) 都有 \(\varphi(b)\) 个数与 \(ab\) 互质,则共有 \(\varphi(a) \varphi(b)\) 个数。得证。
性质四: 若 \(n\) 能唯一分解为 \(\prod_{i=1}^m p_i^{c_i}\),则 \(\varphi(n) = n \prod_{i=1}^m (1 - \frac{1}{p_i})\)
证明:这个可以用容斥原理理解,也可以采用以下方式:
根据欧拉函数的积性与性质二可知,
\(\varphi(n) = \prod_{i=1}^m \varphi(p_i^{c_i}) = \prod_{i=1}^m p_i^{c_i} (1 - \frac{1}{p_i}) = n \prod_{i=1}^m (1 - \frac{1}{p_i})\)
性质五:若 \(p \in \mathbb{P}\) 且 \(p \mid n\),
证明:根据性质四写出式子即可。
运用此性质可以用线性筛求出欧拉函数。
性质六:所有 \([1,n]\) 中与 \(n\) 互质的数能一一配对,即 \(2 \mid \varphi(n) (n>2)\)。
证明:由于若 \(x \perp n\),\(n-x\) 也一定与 \(n\) 互质。特别的是 \(x=n-x\),此时 \(x = \frac{n}{2}\),显然不可能与 \(n\) 互质。
性质七(欧拉反演): \(\sum\limits_{d \mid n} \varphi(d) = n\)
证明:设 \(f(i)\) 表示与 \([1,n]\) 中 \(\gcd(k,n)=i\) 的 \(k\) 的个数,显然有 \(\sum\limits_{i=1}^n f(i) = n\)。根据 \(\gcd\) 定义易知 \(\gcd(k,n)=i\) 等价于 \(\gcd(k,\lfloor \frac{n}{i} \rfloor) =1\)。转为枚举 \(d = \lfloor \frac{n}{i} \rfloor)\),即可将式子变成 \(\sum\limits_{d \mid n} \varphi(d) = n\)。
3.3 欧拉定理
若 \(a \perp m\),则
证明:
引理 3
对于模 \(p\) 的简化剩余系 \(K\),若 \(p \nmid a\),那么模 \(p\) 意义下这些数乘 \(a\) 后互不相同。
证明同引理 \(1\)。容易证明 \(aa_i\) 互不相同,且由于 \(a \perp p\),\(a_i \perp p\),所以 \(aa_i \perp p\),仍位于简化剩余系之中。
那么和费马小定理一样有
即
容易看出其实费马小定理即为欧拉定理的特殊形式。
3.4 扩展欧拉定理
3.5 例题
P4139 上帝与集合的正确用法
考虑使用扩展欧拉定理来化简这个幂塔。那么一定在若干层的嵌套之后,模数 \(p\) 经过若干次欧拉函数的嵌套值变为 \(1\)。而这个层数一定是 \(\log\) 级别的。证明根据定义,若 \(2 \mid n\),一定有 \(\varphi(n) \leq \frac{n}{2}\)。而性质六证明了对于 \(n>2\) 均有 \(2 \mid \varphi(n)\)。所以至多递归 \(\log\) 层。
P3747 [六省联考 2017] 相逢是问候
考虑朴素的想法:用扩展欧拉定理处理幂塔,显然一个位置最多被修改 \(\log\) 次之后就会使得 \(\varphi(p)=1\),尝试用线段树维护区间信息,所以可以每次都暴力修改到每个 \([x,x]\) 区间,暴力的重新计算幂塔的值,只需记录每个区间的每个位置的修改次数的最小值,这样至多有叶子的修改 \(n\log p\) 次,在线段树上走到叶子的复杂度可以均摊忽略不计,每次会有线段树的一个 \(\log\) 和快速幂的 \(\log\),但是用光速幂就可以使得它变为 \(O(n\log^2p)\) 的复杂度。
特别地,我们需要多在预处理的欧拉函数中加一个 \(1\),这是因为 \(a_i=0\) 时会消去一层,需要多进行一层遍历才会进入循环节。
4. 乘法逆元
4.1 对数求逆元
4.1.1 费马小定理
变形可知:
所以当 \(p \in \mathbb{P},p \nmid a\) 时,\(a^{p-2}\) 即为 \(a\) 的乘法逆元。
4.1.2 欧拉定理
若 \(a \perp p\),\(a^{-1} = a^{\varphi(p)-1} \pmod p\)。
优点在于避开了费马小定理模数必须为质数的性质。
4.1.3 Exgcd
直接求解方程 \(ax \equiv 1 \pmod p\) 即可。
4.2 线性求逆元
首先特别定义 \(1^{-1}=1\)。
假设我们已经知道了 \(1 \sim a-1\) 的乘法逆元,尝试递推 \(a\) 的乘法逆元。
不妨设 \(k = \lfloor \frac{p}{a} \rfloor,j = p \bmod a\)。则有 \(ka + j \equiv 0 \pmod p\)。
两面同时乘 \(a^{-1}j^{-1}\) 得 \(kj^{-1} + a^-1 = 0\),也就是
\(a^{-1} = -kj^{-1}\)
\(a^{-1} = (p- \lfloor \frac{p}{a} \rfloor ) \times ( p \bmod a)^{-1}\)
但是我们还有另一种方法:
若想求 \(inv_i = (i!)^{-1}\),可以先用快速幂用费马小定理算出 \(n!\) 的乘法逆元,然后可以倒着递推:
\(inv_i = inv_{i+1} \times (i+1)\)
这样求出阶乘的逆元后也可以通过乘上前缀积来得到 \(1 \sim n\) 的逆元。这个方法也可以用于线性求正整数数组 \(a_1,a_2,...,a_n\) 每个数的逆元。使用时需要注意费马小定理的限制条件。
5. 扩展欧几里得算法
5.1 裴蜀定理
二元一次不定方程 \(ax+by=c\) 有解的充要条件是
令 \(d=\gcd(a,b)\)。
考虑若方程有解,那么一定有 \(d \mid c\),充分性得证。接下来考虑证明必要性。
若 \(\gcd(a,b) \mid c\),这启发我们化简方程,将两边同时乘以 \(\frac{1}{d}\),得到新方程 \(\frac{a}{d}x + \frac{b}{d}y = \frac{c}{d}\)。下文用 \(ax+by=c\) 代表新方程,显然此时有 \(a \perp b\)。此时若 \(ax \bmod b\) 取遍 \(0 \sim b-1\),则 \(ax+by\) 取遍所有整数,方程一定有解。而这个问题与引理一是等价的。由此必要性得证。
证毕。
裴蜀定理同样证明了 \(a\) 在模 \(p\) 意义下存在逆元的条件是 \(a \perp p\)。这是因为 \(ax \equiv 1 \pmod p\) 等价于 \(ax + py = 1\),若 \(\gcd(a,p) \neq 1\),显然无解。
5.2 算法流程
以下流程均基于方程有解。
显然,我们可以求出 \(ax+by=d\) 的解,再将解乘上 \(\frac{c}{d}\)。显然根据裴蜀定理,解一定存在。
回想辗转相除法的算法过程,有关键结论 \(\gcd(a,b) = \gcd(b,a \bmod b)\)。这启示我们可以进行辗转相除式的递归构造。
假设已经求出了方程 \(bx' + (a \bmod b)y' = d\) 的一组解 \(x',y'\),那么
所以有 \(x = y',y=x' - \lfloor \frac{a}{b} \rfloor y'\)。
显然迭代的边界为 \(b=0,a=d\) 时,此时直接钦定 \(x=1,y=0\) 即可。
可以证明,特解的范围为 \(|x| \leq |b|,|y| \leq |a|\)。
5.3 通解
显然此时求出的为一组特解,但是大多数情况都对解有值域限制,于是考虑构造通解的形式。
我们设求出的特解为 \(x,y\),通解 \(x' = x +\Delta x,y' = y + \Delta y\)。显然有 \(a\Delta x + b\Delta y = 0\)。进一步设 \(\Delta = |a\Delta x| = |b \Delta y|\),则显然有 \(\text{lcm}(a,b) \mid Delta\)。
那么由此可知,\(\frac{\text{lcm}(a,b)}{a} \mid \Delta x\),\(\frac{\text{lcm}(a,b)}{b} | \Delta y\),所以通解形式即为:
6. 线性同余方程组
求解:
6.1 中国剩余定理
中国剩余定理适用于 \(m\) 两两互质的情况。
我们可以尝试对于每个方程构造一个 \(x_i\),使得该方程成立,且在其他方程中 \(x_i\) 在其模数意义下为 \(0\),则 \(x = \sum\limits_{i=1}^n x_i\)。
设 \(M=\prod_{i=1}^n m_i\),对于第 \(i\) 个方程,首先 \(x=a_i\) 即可使得方程成立。设 \(c_i = \frac{M}{m_i}\),那么 \(x_i\) 一定为 \(c_i\) 倍数,直接乘上 \(c_i\) 即可满足。若要使方程成立,就再乘上 \(c_i\) 在 \(m_i\) 意义下的乘法逆元 \(d_i\),因为 \(m\) 两两互质,根据裴蜀定理, \(d_i\) 一定存在,只不过不能使用费马小定理来求。注意,乘法不能对 \(m_i\) 取模。
那么就可以有 \(x = \sum\limits_{i=1}^n a_i c_i d_i\)。
6.2 扩展中国剩余定理
扩展中国剩余定理可以处理 \(m\) 不两两互质的情况。
我们考虑如何合并两个同余方程。不难发现,两个方程 \(x \equiv a_1 \pmod {m_1},x \equiv a_2 \pmod {m_2}\) 合并只会有两种情况:
- 无法合并
- 合并为一个形如 \(x \equiv k \pmod {\text{lcm}(m_1,m_2)}\) 的方程。
那么,具体如何合并呢?
首先可以将两个方程都转化为不定方程形式,即 \(x = pm_1 + a_1 = qm_2 + a_2\)。移项可以得到 \(pm_1- qm_2 = a_2 - a_1\),若方程无解,则说明原方程组无解。否则使用扩展欧几里得算法求出 \(p,q\) 之后可以得到 \(x = pm_1 +a_1\) 的值,对 \(\text{lcm}(m_1,m_2)\) 取模就可以得到合并后方程 \(k\) 的值。
以此类推,我们可以不断合并直到只剩下一个方程,此时的 \(k\) 即为答案。
7. 威尔逊定理
7.1 一般形式
由于乘法逆元成对出现,那么对于 \(p \in \mathbb{P}\),此时 \(1 \sim p-1\) 均存在逆元,自然想到探究是否能两两配对,可以得到一个初步的猜想:若 \(p \in \mathbb{P}\),则 \((p-1)! \equiv 1 \pmod p\)。
证明:
首先对于 \(p=2\),定理显然成立。
否则,\(p\) 为奇素数,那么只需要证明不存在 \(a,b \in [1,p-1]\) 满足 \(a^{-1} = b^{-1}\)。不难发现这个和引理一的证明有异曲同工之妙。若 \(a^{-1} = b^{-1} =k\),则 \(ak \equiv bk \pmod p\),也就是 \((a-b)k \equiv 0 \pmod p\)。显然这不可能成立。由此可知逆元一定能两两配对。
但这是不完备的。若存在 \(a = a^{-1}\) 的情况,可能会使得结论不成立。接下来讨论这种情况。
若 \(a = a^{-1}\),则 \(a^2 \equiv 1 \pmod p\),移项可得 \((a+1)(a-1) \equiv 1 \pmod p\),也就是只有 \(a=\pm 1\) 时有 \(a = a^{-1}\)。即对于 \(a \in [2,p-2]\),\(a^{-1}\) 可以实现两两配对。那么可得真正的威尔逊定理的形式:
但是仍可以证明 \(p \in \mathbb{P}\) 的必要性。分几种情况讨论:
- \(p=4\),此时 \(p-1 \equiv 3 \pmod p\)
- \(p\) 为大于 \(4\) 的完全平方数 \(q^2\),那么 \((p-1)!\) 一定包含了 \(q\) 和 \(2q\),两者相乘得 \(2p\),自然有 \((p-1)! \equiv 0\)
- \(p\) 为大于 \(4\) 的非完全平方数,设其最小质因子为 \(q\),那么 \((p-1)!\) 一定包含了 \(q\) 和 \(\dfrac{p}{q}\),且一定有 \(q \neq \dfrac{p}{q}\),自然也有 \((p-1)! \equiv 0\)。
由此可知,当且仅当 \(p \in \mathbb{P}\) 时,有 \((p-1)! \equiv -1\)。
7.2 威尔逊定理的扩展
记 \((p^k!)_p = \prod\limits_{i=1,(i,p)=1}^{p^k} i\),即 \([1,p^k]\) 以内所有与 \(p\) 互质的数的乘积。
那么有推论:
由于 \(p^k\) 与这些数都互质,仍满足朴素威尔逊定理的证明中两个数的逆元不相同的性质,那么延续逆元配对的思路,继续分类讨论证明:
若 \(p>2\),此时观察方程 \((p+1)(p-1) \equiv 0 \pmod p\) ,由于 \(p+1\) 和 \(p-1\) 不可能均为 \(p\) 的倍数从而凑出一个 \(p^k\),那么方程有解只能是 \(p+1 \equiv 0\) 或 \(p-1 \equiv 0\)。与一般情况相同,所以 \((p^k!)_p \equiv -1 \pmod {p^k}\)。
若 \(p=2\),分析 \((x+1)(x-1) \equiv 0 \pmod {2^k}\) 的根的情况。
除了常规的根 \(x=\pm 1\) 以外,又可能 \(p+1\),\(p-1\) 同时为 \(2\) 的倍数,考虑两个数的因子 \(2\) 个数之和要大于等于 \(k\),而两个数的因子 \(2\) 数量不可能都大于 \(1\),所以只能有一个数的因子个数为 \(k-1\),也就是说,我们还会有解 \(x =2^{k-1} \pm 1\)。
考虑重根的情况,分类讨论:
- \(k=1\),四个根都重合,\((p^k!)_p \equiv -1 \pmod {p^k}\)
- \(k=2\),两对根重合,\((p^k!)_p \equiv -1 \pmod {p^k}\)
- \(k \geq 3\),此时不可能再有根重合,\((p^k!)_p = 1 \times (-1) \times (2^{k-1}-1) \times (2^{k-1}+1) \equiv 1 \pmod {p^k}\)
得证。
8. Lucas 定理
若 \(p \in \mathbb{P}\),则
当 \(n,m\) 的规模较大而 \(p\) 较小时,可以使用 Lucas,只需对前一个括号递归求解即可。复杂度为线性对数。
8.1 Lucas 定理的证明
不妨设 \(n = k_1p + b_1\),\(m = k_2p +b_2\)。
而求 \(\dbinom{n}{m}\) 等价于求 \((1+x)^n\) 展开后 \(x^m\) 一项的系数。
引理四
若 \(p \in \mathbb{P}\),则 \((a+b)^p \equiv a^p +b^p\)
证明:考虑二项式定理展开。对于 \(i \in [1,p-1]\) 时,参数为 \(\dbinom{p}{i}\),若 \(p \in \mathbb{P}\),那么其就一定为 \(p\) 的倍数,模 \(p\) 意义下自然得 \(0\),可以消掉。
考虑对 \((1+x)^n\) 根据引理进行转化,有:
考虑对于该式子,\(x^m\) 只能由第一个括号 \(i=k_2\),第二个括号 \(i=b_2\) 时凑出来,此时参数分别为 \(\dbinom{k_1}{k_2},\dbinom{b_1}{b_2}\)。
则为
得证。
8.2 扩展 Lucas 定理
扩展 Lucas 可以处理 \(p \notin \mathbb{P}\) 的情况。
我们仍考虑将非质数转化为质数,将 \(p\) 进行唯一分解,设 \(p = \prod\limits_{i=1}^r q_i^{c_i}\)。
那么若我们能求出一组 \(\{ a_1,a_2,...,a_r\}\),使得满足
那么求出 \(a\) 之后,就可以通过求解这个线性同余方程组得到 \(x \equiv \dbinom{n}{m} \pmod p\)。
考虑求 \(\dbinom{n}{m} \pmod {q^k}\)。由于可能含有质因子 \(q\) 使得乘法逆元不存在,可以直接暴力地将 \(q\) 提出来,即
此时分子分母都不含有 \(q\),可以求出乘法逆元,那么也就是只需要考虑如何求 \(\dfrac{n!}{q^{v_q(n!)}} \pmod {q^k}\)。
暂时先不管分子,考虑 \(n! \pmod {q^k}\)。对于阶乘的每一项按照能否整除 \(q\) 分组,那么设 \(d = \lfloor \dfrac{n}{q} \rfloor\),那么我们单独把 \(q,2q,\cdots,dq\) 拿出来,统一再拿出来 \(q\),那么
不难发现第三部分的累乘是有长度为 \(q^k\) 的循环节的,设 \(d_k = \lfloor \dfrac{n}{q^k} \rfloor\),\(l = n \bmod q^k\),则
那么容易发现,若想考虑上原式子的分母,只需两边同时除下去即可,即
这样分解为递归问题就可以计算了。但是不难看出,第二与第三部分与威尔逊定理的扩展是相同的:
第二部分可以直接使用威尔逊定理的扩展 \(O(1)\) 求出。第三部分可以预处理做到 \(O(1)\)。总体的复杂度为 \(O(\log_p n)\)。
最后给出一份工整的 Exlucas 代码:
Code
本文来自博客园,作者:Aurora_Borealis,转载请注明原文链接:https://www.cnblogs.com/Aurora-Borealis-Not-Found/p/18393546/Basic_Math