【总结】【数论】原根和指标

2019-04-13 20:36发布

前言:

原根和指标在数论中有大量的性质和规律,这里无法一一列举,只能简要写写用到的概率大一些的内容。本文是博主在复习时总结用,许多证明都已经略去,不建议初学者参考(速食主义者除外)。
主要包括:原根的定义及基本性质,求法,指标的定义,以及指标的基本应用。

原根

定义及性质:

要说明原根的完整定义,又要扯到阶那一块,这里就直接用一句话大致表示了: 若a" role="presentation" style="position: relative;">a为模m的原根
那么必然满足(a,m)=1" role="presentation" style="position: relative;">(a,m)=1aφ(m)1 (mod m)" role="presentation" style="position: relative;">aφ(m)1 (mod m),并且不存在一个正整数l<φ(m)" role="presentation" style="position: relative;">l<φ(m),使得al1(mod m)" role="presentation" style="position: relative;">al1(mod m) 下面给出一些原根的基本性质(证明略)
性质1:设g为模m的原根,那么其充要条件是{g,g2,g3,gφ(m)}" role="presentation" style="position: relative;">{g,g2,g3,gφ(m)}组成模m的一个既约剩余系。
.
性质2:若m有原根,其必然满足:m=2,4,pα,2pα" role="presentation" style="position: relative;">pα,2pα,否则没有原根
.
性质3:若m有原根,那么其恰好有φ(φ(m))" role="presentation" style="position: relative;">φ(φ(m))个在模m意义下不同的原根。
这三条是原根最常用的性质,也是后面需要用到的。

原根求法:

对于一个存在原根的数m,其最小原根一般都不大,所以求m的最小原根的复杂度会很玄学(非常小)。。但如果要求所有原根,那复杂度就是妥妥的O(mlogm)了。 其实数论中并没有直接求原根的方式,但有快速检验是否为原根的方式。 将φ(m)" role="presentation" style="position: relative;">φ(m)因数分解,即φ(m)=p1k1p2k2pnkn" role="presentation" style="position: relative;">φ(m)=p1k1p2k2pnkn如果一个数g" role="presentation" style="position: relative;">g是模m的原根,则其必然满足对于任意一个1in" role="presentation" style="position: relative;">1ingφ(m)pi1(mod m)" role="presentation" style="position: relative;">gφ(m)pi1(mod m)
所以一次check的复杂度就是φ(m)" role="presentation" style="position: relative;">φ(m)的质因子个数*快速幂复杂度。 然后根据目标强行枚举就可以了。

指标(离散对数)

根据原根的性质1,g1,g2,g3gφ(m)" role="presentation" style="position: relative;">g1,g2,g3gφ(m)组成模m的一个既约剩余系。
指标用I" role="presentation" style="position: relative;">I表示,满足:I(gx)=x" role="presentation" style="position: relative;">I(gx)=x(这个定义和对数函数非常类似,所以指标又称作离散对数) 并且,它与对数函数也有许多共同的性质:
I(ab)=I(a)+I(b)" role="presentation" style="position: relative;">I(ab)=I(a)+I(b)
I(ak)=k×I(a)" role="presentation" style="position: relative;">I(ak)=k×I(a)
证明非常简单
gI(ab)abgI(a)gI(b)gI(a)+I(b)(mod m)" role="presentation" style="position: relative;">