zoukankan      html  css  js  c++  java
  • [没有证明]原根求法

      蒟蒻自用,请数论大神们口下留情

      由于原根一般比较小,所以可以从2开始暴枚去找

      如果根据原根定义去check是否为原根,单次复杂度$O(phi(P))$

      现有另一种check,复杂度$O(d(phi(P))*log(P-1))$

      $d(x)$是x的质因数个数

      即枚举$phi(P)$的质因数$p_i$,快速幂判断$a^{phi(P)/p_i}$,若都不等于1则$a$是一个原根

      必要性显然,充分性需要利用反证法,设$a$满足上述条件但$a^c ==1,c<phi(P)$

      设$u,v$满足$u*c+v*phi(P)==gcd(c,phi(P))$

      $ u*c=gcd(c,phi(P))-v*phi(P) $

      所以 $ a^{gcd(c,phi(P))-v*phi(P)}==a^{u*c}==1 $

      由于$a^{phi(P)}=1$

      所以$a^{gcd(c,phi(P))}=1$

      由于 $gcd(c,phi(P))<phi(P)$,$gcd(c,phi(P))|phi(P)$

      设$phi(P)$的质因数有$p1,p2,p3......$,则$gcd(c,phi(P))$至少整除$phi(P)/p1,phi(P)/p2......$中的一个

      则$a^{phi(P)/p_i}$至少有一个等于$1$,与假设矛盾。

      所以这样求是没问题的..

  • 相关阅读:
    chrome shortkeys
    五笔xu
    getline()报错解决办法
    PCA程序
    c++矩阵运算库Eigen
    yolo接口
    遇到的编译错误及解决办法
    visual studio command window的使用
    NDK+MSYS2+Android sdk编译opencv源码
    面向对象分析与设计笔记(三)
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11556212.html
Copyright © 2011-2022 走看看