文章目录

  • 定义
  • 性质
  • 求原根
  • 应用
    • 1.指标
    • 2.NTT

在很多地方都用到了原根,比如 NTT 用到了原根的性质,比如离散对数需要用到的指标也与原根有关。

然而在此之前我对原根并不是非常了解,所以来补一补知识盲区。

定义

gggppp 的原根,当且仅当 gggmodpmod \;pmodp 意义下的阶为 φ(p)\varphi(p)φ(p) (这里的 φ(p)\varphi(p)φ(p) 是欧拉函数)。

p.s.g,pg,pg,p 互质, nnn 是满足 gn≡1modmg^n\equiv 1\mod mgn1modm 的最小正整数 , 称 nnngggppp 的阶。

性质

根据定义,有

∀i,j∈[0,φ(p)−1],i≠j,gi≢gjmodp\forall i,j\in[0,\varphi(p)-1],i\neq j,g^i\not\equiv g^j\mod pi,j[0,φ(p)1],i=j,gigjmodp

证明很显然,可以用反证法:

gggppp 的原根,且 ∃i,j∈[0,φ(p)−1],i≠j,gi≡gjmodp\exist i,j\in[0,\varphi(p)-1],i\neq j,g^i\equiv g^j\mod pi,j[0,φ(p)1],i=j,gigjmodp

那么 g∣i−j∣≡1modpg^{|i-j|}\equiv 1\mod pgij1modp

因为 i,j∈[0,φ(p)−1],i≠ji,j\in[0,\varphi(p)-1],i\neq ji,j[0,φ(p)1],i=j

所以 0<∣i−j∣<φ(p)−10<|i-j|<\varphi(p)-10<ij<φ(p)1

由性质可知 ggg 不是 ppp 的原根。

求原根

做法:

还是利用原根的定义。

将欧拉函数质因数分解 φ(p)=∏piki\varphi(p)=\prod p_i^{k_i}φ(p)=piki

若一个数 ggg 满足 ∀i,gφ(p)pi≠1modp\forall i,g^{\frac{\varphi(p)}{p_i}}\neq 1\mod pi,gpiφ(p)=1modp ,那么他是 ppp 的一个原根。

证明:

证明用到裴蜀定理。

假设存在一个 k<φ(p)k<\varphi(p)k<φ(p) 使得 gk≡1(modp)g^k\equiv 1(mod\;p)gk1(modp)

根据裴蜀定理,一定存在一组 a,ba,ba,b 满足 a⋅k−b⋅φ(p)=gcd(k,φ(p))a\cdot k-b\cdot\varphi(p)=gcd(k, \varphi(p))akbφ(p)=gcd(k,φ(p))

所以 gk≡ggcd(k,φ(p))+b⋅φ(p)≡ggcd(k,φ(p))≡1(modp)g^k\equiv g^{gcd(k, \varphi(p))+b\cdot\varphi(p)}\equiv g^{gcd(k,\varphi(p))}\equiv 1(mod \; p)gkggcd(k,φ(p))+bφ(p)ggcd(k,φ(p))1(modp)

因为 k<φ(p)k<\varphi(p)k<φ(p) 所以 gcd(k,φ(p))<φ(p)gcd(k,\varphi(p))<\varphi(p)gcd(k,φ(p))<φ(p)

又因为 gcd(k,φ(p))∣φ(p)gcd(k,\varphi(p))|\varphi(p)gcd(k,φ(p))φ(p)

所以一定存在一个 gφ(p)pi≡1(modp)g^{\frac{\varphi(p)}{p_i}}\equiv 1(mod\; p)gpiφ(p)1(modp) ,通过检验这些数就可以知道一个数是不是原根了。

应用

1.指标

指标函数 I(x)I(x)I(x) 定义如下:

gI(x)≡xmodpg^{I(x)}\equiv x\mod pgI(x)xmodp

可以对比一下连续的对数:

alog⁡ax=xa^{\log_ax}=xalogax=x

可以发现两者非常相似。 I(x)I(x)I(x) 也就是离散对数。与一般意义下的对数性质也非常相似,可以在取模意义下把乘法变成加法,把乘方变成乘法。

详情请见 [SDOI2015]序列统计 。

2.NTT

NTT 用原根来代替实数中使用的单位根 ω\omegaω

ggg是质数ppp的原根,再设ωn=g(p−1)/n\omega_n=g^{(p-1)/n}ωn=g(p1)/nppp满足n∣p−1n|p-1np1)。

  1. ωnn≡1(modp)\omega_n^{n}\equiv 1(mod\; p)ωnn1(modp)
  2. ωn0,ωn1,…,ωnn−1\omega_n^0,\omega_n^{1},\dots,\omega_n^{n-1}ωn0,ωn1,,ωnn1modpmod\; pmodp 意义下互不相同
  3. ωnk≡−ωnk+n/2\omega_n^k\equiv -\omega_n^{k+n/2}ωnkωnk+n/2ωnn/2≡−1(modp)\omega_n^{n/2}\equiv-1(mod\; p)ωnn/21(modp)

第 2 点保证了能够插值,第 3 条保证了 INTT(不知道是不是这么叫,反正就是类似 IDFT 的过程)的进行。