阶、原根、指数方程
1 阶
1.1 阶的定义
若 \(gcd(a, b) = 1\) ,最小的 \(n \ (n > 0)\) 满足 \(a^{n} \equiv 1 (\bmod b)\) 为阶,写作 \(\delta_{b}(a)\) ,称作 \(\delta_{b}(a)\) 是 \(a\) 模 \(m\) 的阶,。
1.2 阶的常用性质
以下性质常用于作其他结论的证明引理。
- \(1, a, a^2, \cdots, a^{\delta_{b}(a) - 1}\) \(\bmod b\) 得到一个 \(\bmod \delta_{b}(a)\) 的完全剩余系。
- 反证显然。若 \(\exists 0 \leq i < j \leq \delta_{b}(a), a^{i} \equiv a^{j} (\bmod b)\) 则 \(a^{j - i} \equiv (\bmod b) \wedge 0 < j - i < \delta_{b}(a)\) 。则 \(\delta_{b}(a)\) 不是 \(a \bmod b\) 的阶。
- 实际意义。刻画了互质下,模意义的剩余。
- 若 \(gcd(a, b) = 1\) ,\(a^{n} \equiv 1 (\bmod b) \Leftrightarrow \delta_{b}(a) \mid n\) 。
- 必要性显然
- 充分性。反证显然。若 \(n < \delta_{b}(a)\) 则 \(\delta_{b}(a)\) 不是 \(a \bmod b\) 的阶。若 \(n > \delta_{b}(a)\) 且 \(n = q \delta_{b}(a) + r (0 < r < \delta_{b}(a))\) 则 \(\delta_{b}(a)\) 不是 \(a \bmod b\) 的阶。
- 实际意义。刻画了互质下,模意义的循环。
- 若 \(gcd(a, b) = 1\) 。若 \(a \bmod b\) 的阶是 \(nm\) ,则 \(a^{n} \bmod b\) 的阶是 \(m\) 。
- 实际意义。若 \(a\) 模 \(b\) 的阶可以用指数函数形式拆分。
- 若 \(gcd(a, c) = 1, gcd(b, c) = 1\) 且 \(gcd(\delta_{c}(a), \delta_{c}(b)) = 1\) ,则 \(\delta_{c}(a) \cdot \delta_{c}(b) = \delta_{c}(ab)\) 。
- 实际意义。若模 \(c\) 意义下,两个阶互质。则阶的乘积是乘积的阶。
- 若 \(gcd(a, b) = 1\) 。若 \(\lambda \geq 1\) ,则 \(\delta_{b}(a^{\lambda}) = \frac{\delta_{b}(a)}{gcd(\delta_{b}(a), \lambda)}\) 。
- 实际意义。刻画了模 \(b\) 意义下,\(a\) 的阶与 \(a\) 的高次的阶之间的联系。
- 证明。这个定理在直觉上还是挺神秘的。
1.2.1 小练习
例 1:给定 \(a, b, N, M\) 。若 \(gcd(a, b) = 1, a^{p} \equiv a^{q} (\bmod b)\) 。询问 \([N, M]\) 中 \(p - q\) 的最小和最大可能值。
解:不妨让 \(p \geq q\) ,则
最小和最大可能值分别为 \(\lceil \frac{N}{\delta_{b}(a)} \rceil \delta_{b}(a)\) 和 \(\lfloor \frac{M}{\delta_{b}(a)} \rfloor \delta_{b}(a)\) 。
1.3 阶的计算
容易注意到:若 \(gcd(a, b) = 1\) 有 \(\delta_{b}(a) \mid \varphi(b)\) 。
直观的想法是分解 \(\varphi(b)\) 的约数,其中最小约数 \(d\) 符合 \(a^{d} \bmod 1 (\bmod b)\) 为阶。
再注意到:
于是找到任意一个满足条件的 \(n\) ,不妨是 \(\varphi(b)\) 。令 \(n = \prod p_i^{e_i}\) ,\(\forall i\) 在保证 \(n\) 满足 \(a^{\frac{n}{p_i}} \equiv 1 (\bmod b)\) 的情况下反复除以 \(p_i\) 。
更进一步,可以 \(O(\sqrt{\varphi(b)})\) 分解 \(\varphi(b)\) 。然后 \(O(\log \varphi(b))\) 回答 \(\forall a, \delta_{b}(a)\) 。
这个算法可以抽象为:若 \(q B (q \geq 1)\) 都满足某条件,\(\forall A\) 满足 \(B \mid A\) 可以反复剔除 \(A\) 的质因子找到 \(B\) 。对 \(A\) 预处理的复杂度为 \(O(\sqrt{A})\) 。
2 原根
2.1 原根定义
若 \(gcd(a, b) = 1\) 。若 \(\varphi(b) = \delta_{b}(a)\) 或 \(a^{\varphi(a)} \equiv a^{\delta_{b}(a)} (\bmod b)\) ,则 \(a\) 是 \(\bmod b\) 的原根。这样的 \(a\) 常用 \(g\) 字母表示。
2.2 原根的常用性质
- \(0, g, g^{1}, \cdots, g^{\varphi(b) - 1}\) \(\bmod b\) 为一个 \(\bmod b\) 的完全剩余系。
- 由 \(\delta_{b}(a)\) 的性质显然。
- 能更深刻的对 \(\bmod b\) 的剩余系进行刻画。
2.3 原根存在定理
模意义下的原根具有超无脑的超能力,只需要存在,而通常不关心是哪个。
2.4 原根个数
2.5 原根的随机期望与最小原根
原根的随机期望和最小原根的证明非常无聊,对计算机科学本身几乎没有帮助。最好暂且当作公理。
最小原根通常可以看作 \(g < p^{0.25}\) 。当 \(p > e^{e^{24}}\) 有 \(g < p^{0.499}\) 。
随机找到原根的次数在最坏情况下的期望是 \(O(\log p)\) 。
计算机中通常随机找原根,无论如何期望上是更优的。
人工通常枚举找最小原根,至少是更利于人类计算的。