zoukankan      html  css  js  c++  java
  • 「证明」原根和离散对数相关性质及证明

    先定义阶的概念:如果$gcd(a,p)==1$,那么对于方程$a^r equiv 1 (mod p)$来说,首先根据欧拉定理$ a^{phi(p)}equiv 1 (mod p) $,解一定存在所以$ rleq 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)$那么,对于任意的$1leq bleqphi(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^cequiv 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$算法求得。

  • 相关阅读:
    面试之求找两个数和为某个数、几个连续数等于某个数
    oracle 创建字段自增长——两种实现方式汇总
    UnityTestTools測试工具
    现代控制理论课件资料与说明
    教你轻松自己定义ViewPagerIndicator
    【Android】自己定义ListView的Adapter报空指针异常解决方法
    SICP-Exercise 1.5
    网络编程----------SOCKET编程实现简单的TCP协议
    字符串翻转
    机房收费系统重构(六)—泛型集合
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/11255755.html
Copyright © 2011-2022 走看看