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

本文总结了数论中的原根和指标概念,包括原根的定义、性质、求法,以及指标的定义和应用,如解模高次方程。介绍了检查原根的复杂度和使用BSGS算法解决离散对数问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

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

原根

定义及性质:

要说明原根的完整定义,又要扯到阶那一块,这里就直接用一句话大致表示了:

a a 为模m的原根
那么必然满足(a,m)=1 aφ(m)1 (mod m) a φ ( m ) ≡ 1   ( m o d   m ) ,并且不存在一个正整数 l<φ(m) l < φ ( m ) ,使得 al1(mod m) a l ≡ 1 ( m o d   m )

下面给出一些原根的基本性质(证明略)

性质1:设g为模m的原根,那么其充要条件是 {g,g2,g3,gφ(m)} { g , g 2 , g 3 , … … g φ ( m ) } 组成模m的一个既约剩余系。

.

性质2:若m有原根,其必然满足:m=2,4, pα,2pα p α , 2 ∗ p α ,否则没有原根

.

性质3:若m有原根,那么其恰好有 φ(φ(m)) φ ( φ ( m ) ) 个在模m意义下不同的原根。

这三条是原根最常用的性质,也是后面需要用到的。

原根求法:

对于一个存在原根的数m,其最小原根一般都不大,所以求m的最小原根的复杂度会很玄学(非常小)。。但如果要求所有原根,那复杂度就是妥妥的O(mlogm)了。

其实数论中并没有直接求原根的方式,但有快速检验是否为原根的方式。

φ(m) φ ( m ) 因数分解,即 φ(m)=pk11pk22pknn φ ( m ) = p 1 k 1 p 2 k 2 … … p n k n 如果一个数 g g 是模m的原根,则其必然满足对于任意一个1in gφ(m)pi1(mod m) g φ ( m ) p i ≠ 1 ( m o d   m )
所以一次check的复杂度就是 φ(m) φ ( m ) 的质因子个数*快速幂复杂度。

然后根据目标强行枚举就可以了。

指标(离散对数)

根据原根的性质1, g1,g2,g3gφ(m) g 1 , g 2 , g 3 … … g φ ( m ) 组成模m的一个既约剩余系。
指标用 I I 表示,满足:I(gx)=x(这个定义和对数函数非常类似,所以指标又称作离散对数)

并且,它与对数函数也有许多共同的性质:
I(ab)=I(a)+I(b) I ( a b ) = I ( a ) + I ( b )
I(ak)=k×I(a) I ( a k ) = k × I ( a )
证明非常简单
gI(ab)abgI(a)gI(b)gI(a)+I(b)(mod m) g I ( a b ) ≡ a b ≡ g I ( a ) ∗ g I ( b ) ≡ g I ( a ) + I ( b ) ( m o d   m )

最常见的应用是:
解模高次方程,例如:
3x30I(4)(mod 37) 3 x 30 ≡ I ( 4 ) ( m o d   37 )
I(3)+30×I(x)I(4)(mod φ(37)=36) I ( 3 ) + 30 × I ( x ) ≡ I ( 4 ) ( m o d   φ ( 37 ) = 36 )
26+30×I(x)2(mod 36) 26 + 30 × I ( x ) ≡ 2 ( m o d   36 )
30×I(x)3626+212(mod 36) 30 × I ( x ) ≡ 36 − 26 + 2 ≡ 12 ( m o d   36 )
当然,要这么解的前提是你要有一个指标表。。。

BSGS

BSGS算法是解决离散对数的又一常用算法(至少比直接打指标表常用。。。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值