题解 P6091 【【模板】原根】

codecode

2020-04-06 15:03:21

题解

前言

upd(2021.02.13):更改了所有已知错误与笔误;对一些评论有异议的地方增添了补充说明;更改了部分用词并修正了一些内容;修正了部分错误的 LaTeX。

另外,codecode 早已退役转战数竞,这次更新可能是对本博客的最后一次更新,但仍欢迎您反馈发现的问题/不懂的表述等说不定还会回来呢

upd(2020.04.06):更新了部分用词;修正了部分 LaTeX 错误;添加了部分内容。

楼下的大佬已经给出了正解,这里只是整理一下并帮他们补充完整证明。

作为数竞生,对于这种问题就想要给出一个完整的证明。(其实作为 OIer,只需要知道结论就可以了,不一定需要知道证明。(雾))

证明比较复杂,可能需要阅读并理解较长时间;如果不想看证明,可以跳到最后看结论。

证明过程

前置:费马定理,欧拉定理,拉格朗日定理。

这里只给出拉格朗日定理的证明。

前置 拉格朗日定理:设 p 为素数,对于模 p 意义下的整系数多项式

f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_0\;(p\nmid a_n)

的同余方程 f(x)\equiv 0\pmod p 在模 p 意义下至多有 n 个不同解。

证明:对 n 使用归纳法。当 n=0 时,由于 p\nmid a_0,故 f(x)\equiv 0\pmod p 无解,定理对 n=0 的多项式 f(x) 都成立。

若命题对于 \deg f<nf 都成立,由反证法,假设存在一个满足题目条件的 f 在模 p 意义下有着至少 n+1 个不同的解 x_0,x_1,\cdots,x_{n}

可设 f(x)-f(x_0)=(x-x_0)g(x),则 g(x) 在模 p 意义下是一个至多 n-1 次的多项式。现在由 x_0,x_1,\cdots,x_n 都是 f(x)\equiv 0\pmod p 的解,知对 1\leq i\leq n,都有

(x_i-x_0)g(x_i)\equiv f(x_i)-f(x_0)\equiv 0\pmod p

x_i \not\equiv x_0 \pmod p,故 g(x_i)\equiv 0\pmod p,从而 g(x)\equiv 0\pmod p 有至少 n 个根,与归纳假设矛盾。

所以,命题对 n 次多项式也成立,定理获证。

_补充:关于拉格朗日定理的证明中,由于 f(x_i)=0,故 f(x)-f(x_i) 就是 f(x),不影响阅读。_

下面来看看阶与原根。

:由欧拉定理可知,对 a\in \mathbf{Z},m\in\mathbf{N}^{*},若 \gcd(a,m)=1,则

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

因此满足同余式 a^n \equiv 1 \pmod m 的最小正整数 n 存在,这个 n 称作 am 的阶,记作 \delta_m(a)

原根:设 m \in \mathbf{N}^{*}a\in \mathbf{Z}。若 \gcd(a,m)=1,且 \delta_m(a)=\varphi(m),则称 a 为模 m 的原根。

关于阶有一个较为显然的性质:

a^n \equiv 1 \pmod m,则 \delta_m(a)|n

证明: 对 n 除以 \delta_m(a) 作带余除法,设

n=\delta_m(a)q+r,0\leq r<\delta_m(a)

r>0,则

a^r\equiv a^r(a^{\delta_m(a)})^q\equiv a^n \equiv 1 \pmod m

这与 \delta_m(a) 的最小性矛盾。故 r=0,即 \delta_m(a)|n

应评论:这里区分出 r>0 是为证明 r=0

阶还有两个重要的性质。

性质 1:设 m\in\mathbf{N}^{*}a,b\in\mathbf{Z}\gcd(a,m)=\gcd(b,m)=1,则

\delta_m(ab)=\delta_m(a)\delta_m(b)

的充分必要条件是 \gcd(\delta_m(a),\delta_m(b))=1

证明: 必要性。由 a^{\delta_m(a)}\equiv 1 \pmod mb^{\delta_m(b)} \equiv 1 \pmod m,可知

(ab)^{\operatorname{lcm}(\delta_m(a),\delta_m(b))}\equiv 1 \pmod m

由前面所述阶的性质,有

\delta_m(ab)|\operatorname{lcm}(\delta_m(a),\delta_m(b))

又由于 \delta_m(ab)=\delta_m(a)\delta_m(b),故

\delta_m(a)\delta_m(b)|\operatorname{lcm}(\delta_m(a),\delta_m(b))

\gcd(\delta_m(a),\delta_m(b))=1

充分性。由 (ab)^{\delta_m(ab)}\equiv 1 \pmod m 可知

1 \equiv (ab)^{\delta_m(ab)\delta_m(b)}\equiv a^{\delta_m(ab)} \pmod m

\delta_m(a)|\delta_m(ab)\delta_m(b)。结合 \gcd(\delta_m(a),\delta_m(b))=1 即得

\delta_m(a)|\delta_m(ab)

对称地,同理可得

\delta_m(b)|\delta_m(ab)

所以

\delta_m(a)\delta_m(b)|\delta_m(ab)

另一方面,有

(ab)^{\delta_m(a)\delta_m(b)}\equiv(a^{\delta_m(a)})^{\delta_m(b)}\times(b^{\delta_m(b)})^{\delta_m(a)}\equiv 1 \pmod m

\delta_m(ab)|\delta_m(a)\delta_m(b)

综合以上两点即得

\delta_m(ab)=\delta_m(a)\delta_m(b)

性质 1 证毕。

性质 2:设 k \in \mathbf{N}m\in \mathbf{N}^{*}a\in\mathbf{Z}\gcd(a,m)=1,则

\delta_m(a^k)=\dfrac{\delta_m(a)}{\gcd(\delta_m(a),k)}

证明:注意到

a^{k\delta_m(a^k)}=(a^k)^{\delta_m(a^k)}\equiv 1 \pmod m \Rightarrow \delta_m(a)|k\delta_m(a^k) \Rightarrow \dfrac{\delta_m(a)}{\gcd(\delta_m(a),k)}|\delta_m(a^k)

另一方面,由 a^{\delta_m(a)}\equiv 1 \pmod m,可知

(a^k)^{\frac{\delta_m(a)}{\gcd(\delta_m(a),k)}}=(a^{\delta_m(a)})^{\frac{k}{\gcd(\delta_m(a),k)}}\equiv 1 \pmod m

\delta_m(a^k)|\dfrac{\delta_m(a)}{\gcd(\delta_m(a),k)}

综合以上两点,得

\delta_m(a^k)=\dfrac{\delta_m(a)}{\gcd(\delta_m(a),k)}

性质 2 证毕。

回到正题,我们下面来证明,关于怎样的 m,其原根存在。

首先,m=1,2,4 时,原根存在。

定理 1:对于奇素数 pp 有原根。

证明:先证一个引理:

引理:设 ab 是与 p 互素的两个整数,则存在 c\in\mathbf{Z} 使得 \delta_p(c)=\operatorname{lcm}(\delta_p(a),\delta_p(b))

_该引理原来的证明存在错误,现已更改证明,感谢 @ lgLinZhengYu 及 @ Peanut_Tang 指出。_

r=\delta_p(a),t=\delta_p(b),设它们的“标准分解”(这里对指数只要求 \max(\alpha_j,\beta_j)>0)分别为

r=\prod_{j=1}^s p_j^{\alpha_j},\quad t=\prod_{j=1}^s p_j^{\beta_j}

l 为所有使得 \alpha_j\leq\beta_jp_j^{\alpha_j} 的乘积,令 m 为所有使得 \alpha_j>\beta_jp_j^{\alpha_j} 的乘积. 记 r=lx,t=my. 则这样定义的 x,y 满足 \gcd(x,y)=1\operatorname{lcm}(r,t)=xy

由性质 2\delta_p(a^l)=x,\delta_p(b^m)=y,则由性质 1\delta_p(a^lb^m)=xy=\operatorname{lcm}(\delta_p(a),\delta_p(b)),即取 c=a^lb^m 即可。

回到原命题,对 1 \sim (p-1) 依次两两使用引理,可知存在 g\in \mathbf{Z} 使得

\delta_p(g)=\operatorname{lcm}\left(\delta_p(1),\delta_p(2),\cdots,\delta_p(p-1)\right)

这表明 \delta_p(j)|\delta_p(g)\;,j=1,2,\cdots,p-1,所以 j=1,2,\cdots,p-1 都是同余方程

x^{\delta_p(g)}\equiv 1\pmod p

的根。由拉格朗日定理,可知方程的次数 \delta_p(g) \geq p-1

又由费马小定理,易知 \delta_p(g) \leq p-1,故 \delta_p(g)=p-1=\varphi(p)

综上可知 g 为模 p 的原根。

定理 1 证毕

定理 2:对于奇素数 p\alpha \in \mathbf{N}^{*}p^\alpha 有原根。

证明:一个基本的想法是将模 p 的原根平移。

先证明一个引理:

引理:存在模 p 的原根 g,使得 g^{p-1}\not\equiv 1 \pmod {p^2}

引理的证明:事实上,任取模 p 的原根 g,若 g 不满足条件,我们认定 g+p 满足条件。

易知 g+p 也是模 p 的原根。

我们有

\begin{aligned}(g+p)^{p-1}&\equiv C_{p-1}^0g^{p-1}+C_{p-1}^1pg^{p-2}\\&\equiv g^{p-1}+p(p-1)g^{p-2}\\&\equiv 1-pg^{p-2}\\&\not\equiv 1 \pmod {p^2}\end{aligned}

回到原题,我们证明若 g 是一个满足引理条件的原根,则对任意 \alpha\in\mathbf{N}^{*}g 是模 p^{\alpha} 的原根。

首先,证明下面的结论:对任意 \beta\in\mathbf{N}^{*},都可设

g^{\varphi(p^\beta)}=1+p^{\beta}\times k_{\beta}

这里 p\nmid k_{\beta}。事实上,\beta=1 时,由 g 的选取可知结论成立。现设上式对 \beta 时成立,则

\begin{aligned}g^{\varphi(p^{\beta+1})}&=(g^{\varphi(p^{\beta})})^{p}\\&=(1+p^{\beta}\times k_{\beta})^p\\&\equiv 1+p^{\beta+1}\times k_{\beta} \pmod {p^{\beta+2}}\end{aligned}

结合 p\nmid k_{\beta} 可知命题对 \beta+1 成立。

所以命题对任意 \beta\in\mathbf{N}^{*} 都成立。

其次,记 \delta=\delta_{p^\alpha}(g),则由欧拉定理,可知 \delta|p^{\alpha-1}(p-1)

而由 g 为模 p 的原根,及 g^{\delta}\equiv 1\pmod {p^\alpha} 可知 (p-1)|\delta

所以可设 \delta=p^{\beta-1}(p-1),这里 1\leq \beta\leq \alpha

现在利用之前的结论,可知

g^{\varphi(p^{\beta})}\not\equiv 1\pmod {p^{\beta+1}}\Rightarrow g^{\delta}\not\equiv 1\pmod {p^{\beta+1}}

结合 g^{\delta}\equiv 1\pmod {p^\alpha} 可知 \beta \geq \alpha

综上可知,\beta=\alpha,即

\delta_{p^{\alpha}}(g)=p^{\alpha-1}(p-1)=\varphi(p^\alpha)

从而,g 是模 p 的原根。

定理 2 证毕

定理 3:对于奇素数 p\alpha\in\mathbf{N}^{*}2p^{\alpha} 的原根存在。

证明:设 g 是模 p^{\alpha} 的原根,则 g+p^{\alpha} 也是模 p^{\alpha} 的原根。

gg+p^{\alpha} 中有一个是奇数,设这个奇数是 G,则 \gcd(G,2p^{\alpha})=1

由欧拉定理,\delta_{2p^{\alpha}}(G)|\varphi(2p^{\alpha})

G^{\delta_{2p^{\alpha}}(G)}\equiv 1\pmod {2p^{\alpha}},故

G^{\delta_{2p^{\alpha}}(G)}\equiv 1 \pmod {p^{\alpha}}

利用 G 为模 p^{\alpha} 的原根可知 \varphi(p^{\alpha})|\delta_{2p^{\alpha}}(G)

结合 \varphi(p^{\alpha})=\varphi(2p^{\alpha}) 可知 G 为模 2p^{\alpha} 的原根。

定理 3 证毕

定理 4:对于 m\notin\{1,2,4\},且不存在奇素数 p\alpha \in \mathbf{N}^{*} 使得 m\in\{p^{\alpha},2p^{\alpha}\},则对任意 a\in\mathbf{Z}\gcd(a,m)=1,都有 \delta_m(a)<\varphi(m),即模 m 的原根不存在

证明:对于 m=2^{\alpha}\alpha\in\mathbf{N}^{*},\alpha\geq 3,则对任意奇数 a=2k+1 均有

\begin{aligned}a^{2^{\alpha-2}}&=(2k+1)^{2^{\alpha-2}}\\&\equiv 1+C_{2^{\alpha-2}}^1(2k)+C_{2^{\alpha-2}}^{2}(2k)^{2}\\&\equiv1+2^{\alpha-1}k+2^{\alpha-1}(2^{\alpha-2}-1)k^2\\&\equiv 1+2^{\alpha-1}(k+(2^{\alpha-2}-1)k)\\&\equiv 1 \pmod {2^{\alpha}}\end{aligned}

其中最后一步用到 k(2^{\alpha-2}-1)k 同奇偶,故其和为偶数。

m 不是 2 的幂,且 m 为符合题目条件的数,则可设 m=rt,这里 2<r<t\gcd(r,t)=1

此时,若 \gcd(a,m)=1,由欧拉定理可知

a^{\varphi(r)}\equiv 1 \pmod r\;,\quad a^{\varphi(t)}\equiv1\pmod t

注意到 n>2 时,\varphi(n) 为偶数,所以

a^{\frac{1}{2}\varphi(r)\varphi(t)}\equiv 1\pmod {rt}

进而

\delta_m(a)\leq\dfrac{1}{2}\varphi(r)\varphi(t)=\dfrac{1}{2}\varphi(rt)=\dfrac{1}{2}\varphi(m)<\varphi(m)

定理 4 得证

结论

上面的定理 14 完整的给出了原根的充要条件。截至目前,我们证明了仅有 1,2,4 或奇素数 p^{\alpha}2p^{\alpha} 有原根,其它的数都没有原根。

那么我们可以先预处理素数及其幂次,及其幂次的 2 倍,\Theta(1) 的判断一个数有没有原根。

如果一个数有原根,可以先求出最小正原根。

王元于 1959 年证明了若 m 有原根,其最小原根是不多于 m^{0.25} 级别的。

事实上,由大量试验数据可以发现,对于足够大的 m,其最小正原根的大小不是多项式级别的。

——百度百科

可以感性理解一下,模 m 的原根有 \varphi(\varphi(m)) 个,密度很大,所以最小原根很小。

根据这个结论,我们可以从小到大枚举。由原根的定义,若 g 为模 m 的原根,则对于 \varphi(m) 的任意素因数 p,必有

g^{\varphi(m)/p}\not\equiv 1 \pmod m

同时,满足如上条件的 g,必将是原根。

我们可以预处理出 \varphi(m) 的所有素因数,快速幂来判断。

假如找到了一个原根 g,不难证明对于所有 \gcd(x,\varphi(m))=1xg^x 均为原根,所以模 m 的原根有 \varphi(\varphi(m)) 个。

所以我们可以在找到 g 后再枚举找出所有 m 的原根,排序后按要求输出。

复杂度不会算

注意需要开 longlong