原根与指标(指标也被称为离散对数(#^.^#))
原根我们清楚了。
啥是指标呢?
对于模13,2是它的原根,则
2x mod 13" role="presentation">2x mod 13会取遍
[1,12]" role="presentation">[1,12],
x∈[1,12]" role="presentation">x∈[1,12]
比如
24=16≡3 mod( 13)" role="presentation">24=16≡3 mod( 13)
则
I(3)=4" role="presentation">I(3)=4
这就是指标函数
I" role="presentation">I
显然,指标函数是双射函数
指标法则 指标满足下述法则:
- I(ab)≡I(a)+I(b) (mod p−1)" role="presentation">I(ab)≡I(a)+I(b) (mod p−1) 乘积法则
- I(ak)≡kI(a) (mod p−1)" role="presentation">I(ak)≡kI(a) (mod p−1) 幂法则
证明: gI(ab)≡ab≡gI(a)gI(b)≡gI(a)+I(b)(mod p)" role="presentation">gI(ab)≡ab≡gI(a)gI(b)≡gI(a)+I(b)(mod p)
这意味着
gI(ab)−I(a)−I(b)≡1 (mod p)" role="presentation">gI(ab)−I(a)−I(b)≡1 (mod p)
又
g" role="presentation">g是原根,则
I(ab)−I(a)−I(b)" role="presentation">I(ab)−I(a)−I(b)是
p−1" role="presentation">p−1的倍数
所以乘积法则得证。
幂法则同理。
如果我们现在已经有了指标表(
p−1" role="presentation">p−1对映射),则可以通过
指标法则求模和简化解同余式
比如求
2914 mod37" role="presentation">2914 mod37 ,你可以使用快速幂
也可以用指标法则。
I(2914)≡14∗I(29)≡14∗21≡6 mod 36" role="presentation">I(2914)≡14∗I(29)≡14∗21≡6 mod 36
又
I(27)=6" role="presentation">I(27)=6,所以
2914≡27 (mod 37)" role="presentation">2914≡27 (mod 37)
指标法则也可以用来求同余式
考虑同余式
19x≡23(mod37)" role="presentation">19x≡23(mod37)
则
I(19)+I(x)≡I(23) (mod 36)" role="presentation">I(19)+I(x)≡I(23) (mod 36)
35+I(x)≡15 (mod 36)" role="presentation">