Miller_Rabin

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Miller_Rabin相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
int power(ULL a,int k,int mod){
ULL ans=1l;
	while(k){
		if(k&1)
			ans*=a;
		a*=a;
		a%=mod;
		ans%=mod;
		k>>=1;
	}
	return ans%mod;
}
bool is_prime(int x){
int n=x-1,a,b=0,k,v;
	if(x==2||x==3||x==5||x==7||x==11||x==13||x==17)return true;
	if(!x||x==1||!x&1||!x%3||!x%5||!x%7||!x%11||!x%13||!x%17)return false;
	while(~n&1){
		b++;
		n>>=1;
	}
	a=n;
	for(int ii=1;ii<=5;ii++){
		bool flag=true;
		k=rand()%(x-1)+1;
		v=power(k,a,x);
		if(v==1||v==x-1)
			continue;
		for(int i=0;i<=b;i++){
			v=(ULL)v*v%x;
			if(v==x-1){
				flag=false;
				break;
			}
		}
		if(flag)
			return false;
	}
	return true;
}
int main(){
	int k;
	scanf("%d",&k);
	if(is_prime(k))
		puts("Yes");
	else
		puts("No");
	return 0;
}

  

以上是关于Miller_Rabin的主要内容,如果未能解决你的问题,请参考以下文章

素数判定Miller_Rabin 算法详解

数论Miller_Rabin

[数论][Miller_Rabin] Goldbach

hdu2138 Miller_Rabin

Miller_Rabin

Miller_Rabin