• 费马小定理(新方法)


    费马小定理

    内容:当p为质数,且gcd(a, p)=1,那么$ a^{p-1}equiv 1 (mod p ) $

    证明:
    构造出素数p的既约剩余系(最小公约数为1)

    (P=) { (1,2,3, ··· ,p-1) }

    因为(a, p)=1,所以A也是一个既约剩余系

    $ A=$ { (a, 2a, 3a, ··· ,(p-1)a) }

    因为A在mod p意义下把余数全取到了,所以

    $ 1 imes 2 imes 3 imes ··· imes (p-1)equiv a imes 2a imes 3a imes ··· imes a(p-1) (mod p ) $

    $ (p-1)! equiv (p-1)! a^{p-1} ( mod p ) $

    因为$ ( (p-1)!, p )=1 $
    所以

    $ a^{p-1}equiv 1 (mod p ) $

    当遇到求$ a/b mod p $(p为质数)时,因为除法不能分开mod,所以要变成

    $ a imes b^{-1} mod p $

    运用费马小定理再变

    $ a imes (b{p-1})b{-1} mod p $

    $ a imes b^{p-2} mod p $

    不过,好麻烦啊

    无聊时逛了wck的博客,看到他看到了vfk的神奇代码:(此处转载代码)

    rfact[1] = 1;
    for (int x = 2; x <= n; x++)
        rfact[x] = (s64)rfact[Mod % x] * (Mod - Mod / x) % Mod;
    

    rfact[i]1/i mod p,称为i的逆元
    证明:
    设$ p=kx+b, k=left lfloor frac{p}{x} ight floor, b=p mod x $,要求rfact[x].

    (ecause pequiv kx+b (mod p ))

    $ herefore xpequiv kx+b (mod p ) $

    $ frac{p}{b}equiv frac{k}{b}+frac{1}{x} (mod p ) $

    $ frac{1}{x} equiv frac{p-k}{b}(mod p ) $

    所以递推就可以把逆元全求出来。

    告别快速幂。

    PS:

    好像发现了一些问题……
    这里的Mod一定要是质数,否则会有错。
    如果Mod不是质数,那么只能用扩展欧几里得。
    (rfact[x] equiv frac{1}{x} (mod p))
    (x cdot rfact[x] - kp= 1)
    扩展欧几里得可求。

  • 相关阅读:
    (转)AS3中实现卡马克卷轴算法
    (转)flash位图缓存cacheAsBitmap
    (转)addFrameScript函数的纠结
    (转)flash安全策略文件
    (转)脏矩形技术学习
    (转)stopImmediatePropagation 和stopPropagation的区别
    (转)flash对象池技术
    揭开嵌入式C面试题背后的玄机
    一次遍历找链表倒数第n个节点
    N!的尾部连续0的个数
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/4373545.html
Copyright © 2020-2023  润新知