「证明」原根和离散对数相关性质及证明

先定义阶的概念:如果$gcd(a,p)==1$,那么对于方程$a^r \equiv 1 (mod\ p)$来说,首先根据欧拉定理$ a^{\phi(p)}\equiv 1 (mod\ p) $,解一定存在所以$ r\leq \phi(p) $,最小的$r$称为$a$关于$p$的阶,记作$ ord_p(a) $

 

定义原根概念:一个模$ p $意义下的$ 0->p-1 $次幂各不相同,取遍$ [0,p-1] $,也就是说$ ord_p(g)=\phi(p) $。

先说一下什么样的数具有原根。

结论是:对于奇质数$ p $,有原根的数是:$ 2,4,p^e,2p^e $证明比较麻烦,$Niven$和$Zuckerman$证明,略去过程。

因为最小原根一般都比较小,所以可以直接枚举出来,而这种方法有时候就显得过于慢。

怎么更快。

有一个结论可以用:对于一个有原根的数$p$,如果$g$的$\phi(p)$的所有因子次方在$mod\ p$条件下均不为1,那么$g$是$p$的原根。

证明:首先结论可以转化为,如果对于任意的$b|\phi(p)$,均不满足$ g^b \equiv 1 (mod\ p)$那么,对于任意的$1\leq b\leq\phi(p)-1$ ($b$不满足$b|\phi(p)$),均不满足$g^b \equiv 1 (mod\ p)$。

反证:

  假设存在一个$b$,($b$不满足$b|\phi(p)$),满足$g^b \equiv 1 (mod\ p)$,设其中小的为$c$,那么$g^c\equiv 1 (mod\ p)$成立。

  令$d=\phi(p)-c,d>=c$

  根据欧拉定理。

  $ g^d \equiv g^{\phi(p)-c} \equiv g^{-c} \equiv 1 (mod\ p) $

  引理:$c|d$不成立。

  反证:假设成立。

    令$d=kc$

    那么:$\phi(p)=d+c=(k+1)c$

    不满足$c|\phi(p)$。

    所以假设不成立。

  引理$c|d$不成立得证。

  那么$gcd(c,d)\leq c$

  因为:

  $g^c \equiv 1 (mod\ p)$

  $g^d \equiv 1 (mod\ p)$

  那么:

  $g^{c-d} \equiv 1 (mod\ p)$

  模拟更相损益术重复相减得到最终的$gcd$的过程,发现最终结果是:

  $ g^{gcd(d,c-d)} \equiv g^{gcd(c,d)} \equiv 1 (mod\ p) $;

  因为$gcd(c,d)<c$与假设的$c$是最小的$b$不成立。

  所以假设不成立。

证毕。

所以用这种方式可以较快的验证原根。

 

int primert(int p,int phi)
{
    int d=0;
    for(int i=2;1LL*i*i<=phi;i++)
        if(phi%i==0)
            dp[++d]=i,dp[++d]=phi/i;
    for(int i=2;;i++)
    {
        int j;
        for(j=1;j<=d;j++)
            if(qw(i,dp[j],p)==1)
                break;
        if(j==d+1) return i;
    }
    return 0;
}
速求原根代码

 

关于离散对数,也称作指标。

定义概念:如果$g$是$p$的一个原根,那么对于方程$g^x \equiv a(mod p)$的解$x$,称$x$为对模$p$到基$g$上的$a$的一个离散对数或指标。记作$ind_{p,g}(a)$

 

离散对数定理:当且仅当$x \equiv y (mod\ \phi(p))$成立时,$ g^x \equiv g^y (mod\ \phi(p)) $成立。

(当且仅当和充分必要是等价表述)

先证必要性:因为$g$的各个次幂在$mod\ p$条件下各不相同,而以$\phi(p)$为循环节,那么也就是说在每个长度为$\phi(p)$的循环节中都存在某一个值和之前的循环节中的某个值相同,如果$x$和$y$在$mod\ phi(p)$条件下不同余,他们就不可能的到相同的同余于$p$的g的次方的答案。

再证充分性:

  假设$x \equiv y(mod \phi(p))$成立。

  那么:

  $ g^x \equiv g^{y+k \phi(p)} $   $(mod\ p) $

    $ \equiv g^y (g^{\phi(p)})$  $(mod\ p)$

    $ \equiv g^y 1^k $           $(mod\ p)$

    $ \equiv g^y      $          $(mod\ p)$

  导出结论,证明充分。

这是离散对数定理。

写一下推论。

  $x^A \equiv B (mod\ p) \Leftrightarrow Aind_{p,g}(x) \equiv ind{p,g}(B) (mod\ p)$

于是我们成功的把高次同余方程等价转化为了线性同余方程,而离散对数可以用$BSGS$算法求得。

posted @ 2019-07-27 16:52  Lrefrain  阅读(689)  评论(8编辑  收藏  举报