【学习笔记】阶与原根

引入

根据欧拉定理,我们知道:若 \(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\) 意义下所有原根。

参考文献

posted @ 2021-12-25 19:59  Captain-01  阅读(294)  评论(0)    收藏  举报