• 数论随笔(updating)


    数论笔记

    BSGS(大步小步法)

    ​ 求解形如(a^x equiv b (mod p))的方程的(x)((gcd(a,b) = 1))

    ​ 令(x = msqrt{p}-n(m,nleq sqrt{p})),那么(a^{msqrt{p}-n}equiv b(mod p)),将两边同乘一个(a^n),可得(a^{msqrt{p}}equiv ba^n(mod p))

    ​ 然后先枚举(n),用哈希表把右边存下来,再枚举(m),看有无能与它同余的(n)值,就可以知道(x)

    ​ 若要求最小解,哈希表中相同哈希值的那一位取(n)的最大值,然后在比较的时候取一下(max)值就好了。

    总结:数论中常用的构造法的一个鲜明的例子,将枚举(p)次构造成两边各枚举(sqrt{p})次,以后数论中要常想到用这种构造法。

    扩展BSGS

    ​ 假如上面的(a,p)不互质该怎么办呢?

    ​ 辣么我们通过不断除去(gcd(a,p)),来使它们变得互质,具体而言:

    ​ 首先求(gcd(a,p)=c_i),然后可以得到(frac{a}{c_i}a^{x-1}equiv frac{b}{c_i}(mod frac{p}{c_i}))

    ​ 然后,(frac{a}{c_i}a^{x-1})(frac{p}{c_i})可能依然不互质,那么我们依葫芦画瓢,再除去一个(gcd(a,frac{p}{c_i}))

    ​ 如果仍然不互质,就一直除到两者互质为止,假设我们除了(k)次,那么我们可得

    (frac{a^k}{prod_{i=1}^{k} c_i}a^{x-k}equiv frac{b}{prod_{i=1}^{k} c_i}(mod frac{p}{prod_{i=1}^{k} c_i}))

    ​ 然后(frac{a^k}{prod_{i=1}^{k} c_i})是个可以算出来的常量,我们把它除到右边去就好了,因为(frac{p}{prod_{i=1}^{k} c_i})(a)互质,所以有逆元,可以除。

    ​ 当然,(x)可能小于(k),我们(O(sqrt{p}))的时间直接枚举看看在小于(k)的范围内有没有解就好了。

  • 相关阅读:
    如何进行有效沟通避免出现误会
    如何进行有效沟通
    怎样提高自己的团队合作能力
    javaScript简介
    css文本格式详解
    css简介及相关概念
    WebGL10---3D模型的加载与使用
    Canvas绘图与动画详解
    Canvas绘制时钟
    WebGL9----将canvas作为纹理,将动画作为纹理(2)
  • 原文地址:https://www.cnblogs.com/Illusions/p/14254296.html
Copyright © 2020-2023  润新知