数学

有关数论的详细的定理证明我就先不写了,否则要写一年。

  • 快速幂

快速幂会把幂次方运算从O(n)复杂度降低到O(logn)。

假设求a的b次方,可以把b进行二进制分解,分解成若干个2的 i 次方相加。
例如:a^{11}=a^{2^0+2^1+2^3} -> a^{11}=a^{2^0}*a^{2^1}*a^{2^3}
注意取模

ll Fast_pow(ll a,ll b,ll p) {
    ll r=1,base=a;
    while(b) {
        if(b&1) r=(r%p*base%p)%p;
        base=(base%p*base%p)%p;
        b>>=1;
    }
    return r%p;
}

  • 素数(质数)

因子只有1和其本身的数。

  • 判断素数O(\sqrt{n}

bool Prime(int x) {
    if(x<=1) return false;
    for(int i=2;i<=sqrt(x);i++) 
    if(!(x%i)) return false;
    return true;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容