阶与原根 学习笔记
阶与原根
前言
既然都学 OI 了,还要证明干嘛。
阶
定义:满足 \(a^n\equiv 1\pmod p\) 的最小的正整数 \(n\) 称作 \(a\) 在模 \(p\) 意义下的阶,记作 \(ord_p(a)\)。
性质1:对于 \(1\le i\le ord_p(a)\),\(a^i\) 不同余。
性质2:对于 \(a^n \equiv1\pmod p\),\(ord_p(a)\mid n\)。
性质3:如果 \(a^n\equiv a^m\pmod p\),则 \(n\equiv m\pmod {ord_p(a)}\)。
性质4:若 \(\gcd(a,m)=\gcd(b,m)=1\),则当且仅当 \(\gcd(ord_m(a),ord_m(b))=1\) 时,\(ord_m(a\times b)=ord_m(a)\times ord_m(b)\)。
性质5:若 \(\gcd(a,m)=1\),则 \(ord_m(a^k)=\dfrac{ord_m(a)}{\gcd(ord_m(a),k)}\)。
性质6:对于质数 \(p\),\(ord_p(x)=\dfrac{\varphi(p)}{\gcd(\varphi(p),x)}\)。
原根
定义:对于 \(1\le g<m\),若 \(\gcd(g,m)=1\) 且 \(ord_m(g)=\varphi(m)\),则 \(g\) 是 \(m\) 的原根。原根可能有多个。
性质:当 \(m\) 为质数时,\(g^i\bmod m(0<i<m)\) 互不相同。
原根个数:若 \(m\) 有原根,\(m\) 的原根个数为 \(\varphi(\varphi(m))\)。
原根存在:原根存在,当且仅当 \(m=2,4,p^k,2p^k\),其中 \(p\) 为奇质数。
原根判定:对于 \(\gcd(g,m)=1\),若 \(g\) 是 \(m\) 的原根,当且仅当对于 \(\varphi(m)\) 的每个素因子 \(p\),都有 \(g^{\frac{\varphi(m)}{p}}\ne 1\pmod m\)。
原根范围:素数的最小原根为 \(O(m^{0.25})\)。
求最小原根:由于最小原根的范围,我们可以从小到大枚举每个数暴力地判断是否为原根,复杂度 \(O(\sqrt m)\)。
应用
可以把乘法通过原根转化为指数上的加法。
习题
P6091 [模板] 原根
题意:求一个数的所有原根。
题解:
我们找到一个原根 \(g\),那么对于所有 \(\gcd(x,\varphi(m))=1\) 的 \(x\),\(g^x\bmod m\) 是原根。
AT abc212_g
求有多少整数对 \((x,y)\) 满足存在一个正整数 \(n\) 使得 \(x^n\equiv y\pmod P\),给定质数 \(P\),\(P\le10^{12}\)。
题解:
根据质数的原根的性质,我们找到 \(P\) 的原根 \(g\),则 \(x,y\) 可以表示成 \(g^a,g^b\),那么
根据欧拉定理,
那么根据同余方程的性质,
枚举 \(\gcd\) 的值,
右边的和式当且仅当 \(d\mid (P-1)\) 时不为 \(0\)。
右边是 \(\varphi\) 的定义,
\(d\) 为 \(P-1\) 的因数时有值,
因数取遍,则
直接算为 \(O(d(P-1)\sqrt{P-1})\)。