原根的性质及其求法

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

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

定义

g g g p p p 的原根,当且仅当 g g g m o d    p mod \;p modp 意义下的阶为 φ ( p ) \varphi(p) φ(p) (这里的 φ ( p ) \varphi(p) φ(p) 是欧拉函数)。

p.s. g , p g,p g,p 互质, n n n 是满足 g n ≡ 1 m o d    m g^n\equiv 1\mod m gn1modm 的最小正整数 , 称 n n n g g g p p p 的阶。

性质

根据定义,有

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

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

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

那么 g ∣ i − j ∣ ≡ 1 m o d    p g^{|i-j|}\equiv 1\mod p gij1modp

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

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

由性质可知 g g g 不是 p p p 的原根。

求原根

做法:

还是利用原根的定义。

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

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

证明:

证明用到裴蜀定理。

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

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

所以 g k ≡ g g c d ( k , φ ( p ) ) + b ⋅ φ ( p ) ≡ g g c d ( k , φ ( p ) ) ≡ 1 ( m o d    p ) 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) 所以 g c d ( k , φ ( p ) ) < φ ( p ) gcd(k,\varphi(p))<\varphi(p) gcd(k,φ(p))<φ(p)

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

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

应用

1.指标

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

g I ( x ) ≡ x m o d    p g^{I(x)}\equiv x\mod p gI(x)xmodp

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

a log ⁡ a x = x a^{\log_ax}=x alogax=x

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

详情请见 [SDOI2015]序列统计

2.NTT

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

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

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值