#include <stdio.h>
long long powerful(long long a,long long x,long long mod)
{
long long t=a,r=1;
while(x)
{
if(x&1)
r=r*t%mod;
t=t*t%mod;
x=x>>1;
}
return r;
}
bool MR(long long a,long long n)
{
if(n==2||n==7||n==61)
return true;
long long d=n-1,r=0,i,t;
while((d&1)==0)
{
d=d>>1;
r++;
}
t=powerful(a,d,n);
if((t==1)||(t==n-1))
return true;
for(i=1;i<r;i++)
{
t=t*t%n;
if(t==1)
return false;
if(t==n-1)
return true;
}
return false;
}
int main()
{
long long n;
while(~scanf("%lld",&n))
{
if(MR(2,n)&&MR(7,n)&&MR(61,n))
puts("Yes");
else
puts("No");
}
}
miller-rabin素性判定
最新推荐文章于 2022-04-19 19:27:23 发布