long long pow_mod(long long a,long long b,long long r){
long long ans=1,buff=a;
while(b){
if(b&1)
ans=(ans*buff)%r;
buff=(buff*buff)%r;
b>>=1;
}
return ans;
}
bool test(long long n,long long a,long long d){
if(n==2){
return true;
}
if(n==a){
return false;
}
if(!(n&1)){
return false;
}
while(!(d&1)){
d>>=1;
}
long long t=pow_mod(a,d,n);
while(d!=n-1&&t!=n-1&&t!=1){
t=t*t%n;
d<<=1;
}
return t==n-1||(d&1)==1;
}
bool isprime(long long n){
int a[]={2,3,5,7};
for(int i=0;i<=3;i++){
if(n==a[i]){
return true;
}
if(!test(n,a[i],n-1)){
return false;
}
}
return true;
}
Miller Rabbin
猜你喜欢
转载自www.cnblogs.com/ukcxrtjr/p/11119899.html
今日推荐
周排行