加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数论模板

发布时间:2020-12-14 04:42:01 所属栏目:大数据 来源:网络整理
导读:Miller-Rabin(判断素数) logn ll a[ 5 ]= { 2 , 3 , 5 , 7 , 11 };ll quickpower(ll a,ll n,ll p){ ll ans = 1 ; while (n) { if (n 1 ) ans=(a*ans)% p; n =n 1 ; a =(a*a)% p; } return ans;} bool judge(ll a,ll x,ll t,ll n){ ll ret = quickpower(a,x,n

Miller-Rabin(判断素数) logn

ll a[5]= {2,3,5,7,11};
ll quickpower(ll a,ll n,ll p)
{
    ll ans=1;
    while(n)
    {
        if(n&1) ans=(a*ans)%p;
        n=n>>1;
        a=(a*a)%p;
    }
    return ans;
}
bool judge(ll a,ll x,ll t,ll n)
{
    ll ret=quickpower(a,x,n);
    if(ret==n-1||ret==1) return false;
    for(int i=0; i<t; i++)
    {
        ret=ret*ret%n;
        if(ret==n-1) return false;
    }
    return true;
}
bool miller_rabbin(ll n)
{
    if(n==2||n==3||n==5||n==7||n==11) return true;
    if((n&1)==0||n%3==0||n%5==0||n%7==0||n%11==0) return false;
    if(n<2) return false;
    ll t=0,x=n-1;
    while(!(x&1))
    {
        t++;
        x=x>>1;
    }
    ll i;
    for(i=0; i<5; i++)
    {
        if(judge(a[i],t,n)) return false;
    }
    return true;
}
View Code

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读