【学习笔记】阶与原根
引入
根据欧拉定理,我们知道:若 \(a \perp m\),则 \(a^{\varphi(m)}\equiv 1\pmod m\)。
因此,数列 \(a^1,a^2,a^3,\cdots\) 在模 \(m\) 意义下有一个 \(\varphi(m)\) 的循环节,因为 \(a^{\varphi(m)+1}\equiv a\pmod{m}\)。
然而,我们并不能保证它是最短的循环节。于是我们把这个最短循环节的长度称作为 \(a\) 在模 \(m\) 下的阶,记作 \(\delta_m(a)\)。严格地,定义 \(a\) 在模 \(m\) 下的阶是同余方程 \(a^x\equiv 1\pmod{m}\) 的最小正整数解。
\(\delta_m(a)\) 必定是 \(\varphi(m)\) 的因数(证明见性质 \(1\))。特别地,当 \(\delta_m(a) = \varphi(m)\) 时,我们称 \(a\) 为模 \(m\) 下的一个原根。对于原根 \(a\) 来说,\(a^0,a^1,a^2,\cdots,a^{\varphi(m)-1}\) 在模 \(m\) 意义下两两不同,这是原根重要的性质和等价定义。
注意到:若 \(a \perp m,a \equiv p \pmod m\),则 \(p \perp m\),即 \(a\) 在模 \(m\) 的一个互素剩余类之中。
我们知道,模 \(m\) 的简化剩余系由 \(\varphi(m)\) 个整数组成,且任意 \(\varphi(m)\) 个整数组成模 \(m\) 的一组简化剩余系的充要条件是这些数与 \(m\) 互素,并对模 \(m\) 两两不同余。
由此可见,\(a^0,a^1,a^2,\cdots,a^{\varphi(m)-1}\) 即为模 \(m\) 的一个简化剩余系。
阶的性质
性质 \(1\):若 \(a^n\equiv 1\pmod{m}\),则 \(\delta_m(a)\mid n\)。
证明:考虑带余除法,设 \(n=\delta_m(a)q+r\),其中 \(0\le r <\delta_m(a)\)。
性质 \(2\):若 \(a \perp m\) 且 \(b \perp m\),则 $$\delta_m(ab)=\delta_m(a)\delta_m(b)$$ 的充分必要条件是 $$\gcd(\delta_m(a),\delta_m(b))=1$$
性质 \(3\):若 \(k\in\mathbf{N}^*,a \perp m\),则 $$\delta_m(a^k)=\dfrac{\delta_m(a)}{\gcd(\delta_m(a),k)}$$
原根
原根判定定理:若 \(a \perp m\),则 \(a\) 是模 \(m\) 的原根的充要条件是对于 \(\varphi(m)\) 的每个素因数 \(p\),都有 \(a^{\frac{\varphi(m)}{p}}\not\equiv 1\pmod m\)。
原根存在定理:\(m\) 存在原根当且仅当 \(m=2,4,p^\alpha,2p^\alpha\),其中 \(p\) 为奇素数,\(\alpha \in \mathbf{N^*}\)。
由原根存在定理,不难推出:\(a\) 是 \(n\) 的原根的必要条件是 \(a \perp n\)。
原根数量
若 \(m\) 有原根,则它原根数量为 \(\varphi(\varphi(m))\) 。
结合阶的性质 \(3\),在我们找到 \(m\) 的一个原根 \(a\) 之后,若 \(a^k\) 也是 \(m\) 的原根,则 $$\delta_m(a^k)=\dfrac{\delta_m(a)}{\gcd(\delta_m(a),k)}=\dfrac{\varphi(m)}{\gcd(\varphi(m),k)}=\varphi(m)$$
即 \(\gcd(\varphi(m),k)=1\)。
又由于 \(a^1,a^2,\cdots,a^{\varphi(m)-1},a^{\varphi(m)}\) 构成模 \(m\) 的一组简化剩余系,故所有满足 \(\gcd(\varphi(m),k)=1\) 的 \(a^k\) 即为 \(m\) 的所有原根,同时说明了 \(m\) 的原根数量为 \(\varphi(\varphi(m))\) 。
最小原根的数量级
数学家已经证明,若 \(m\) 有原根,其最小原根是不多于 \(m^{\frac{1}{4}}\) 级别的。
这保证了我们暴力找最小原根的复杂度是可以接受的。
求出 \(n\) 的所有原根
首先,预处理 \(\varphi\) 和质数。
\(\forall\;n\),求出 \(\varphi(n)\) 的所有素因子 \(p_i\),通过快速幂和原根存在定理判断其是否有原根。
然后,枚举最小原根,通过原根判定定理进行判断。
找到最小原根之后,可以通过枚举 \(1-\varphi(n)\) 并判断 \(\varphi(n)\) 是否与其互素,由此找出模 \(n\) 意义下所有原根。

浙公网安备 33010602011771号