Miller-Rabin测试素数模板

ll qpow(ll a,ll b,ll M) //快速幂
{
    ll ans =1;
    while(b)
    {
        if(b&1)
            ans*=a;ans%=M;
        a*=a;a%=M;b>>=1;
    }
    return ans;
}
bool MillerRabinTest(ll x,ll n)//选取x为底,判定n是否可能为素数
{
    ll y=n-1;
    while(!(y&1))y>>=1; //略去n-1(=d*2^s)右端连续的0,将其调整为d
    x=qpow(x,y,n);//x=x^d mod n
    while(y

你可能感兴趣的:(My,acm模板)