基础算法学习_2
//算法:MR素数测试
//输入要求:n>2 且n为奇数;k为测试次数
//n<1e6 k=2 a=2或3 n为无符号整数 k=3 a=2 7 61
bool MR(int n,int k){
int s=0,d=n-1;
while(d%1==0) d>>=1,s++;
for(int i=1;i<=k;i++){
int a=rand()%(n-1)+1;
int x=exp_mod(a,d,n);
for(int j=1;j<=s;j++){
int x1=x*x%n;
if(x1==1&&x!=1&&x!=-1) return 0;
x=x1;
}
if(x!=1) return 0;
}
return 1;
}

浙公网安备 33010602011771号