文章目录

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

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

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

定义

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

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

性质

根据定义,有

∀i,j∈[0,φ(p)−1],i≠j,gi≢gjmodpforall i,jin[0,varphi(p)-1],ineq j,g^inotequiv g^jmod pi,j[0,φ(p)1],i=j,gigjmodp

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

gggppp 的原根,且 ∃i,j∈[0,φ(p)−1],i≠j,gi≡gjmodpexist i,jin[0,varphi(p)-1],ineq j,g^iequiv g^jmod pi,j[0,φ(p)1],i=j,gigjmodp

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

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

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

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

求原根

做法:

还是利用原根的定义。

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

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

证明:

证明用到裴蜀定理。

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

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

所以 gk≡ggcd(k,φ(p))+b⋅φ(p)≡ggcd(k,φ(p))≡1(modp)g^kequiv g^{gcd(k, varphi(p))+bcdotvarphi(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 xmod 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)/nomega_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−1omega_n^0,omega_n^{1},dots,omega_n^{n-1}ωn0,ωn1,,ωnn1modpmod; pmodp 意义下互不相同
  3. ωnk≡−ωnk+n/2omega_n^kequiv -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 的过程)的进行。