题目要求:p和a要满足(a^p)%p==a且p为非素数!由于数据较大,要用long long型,且要用到快速幂!快速幂简介:
点击打开链接,再加上一个判断素数的函数就行了。
#include<cstdio>
int su(long long n){
for(int i=2;i*i<=n;i++)
if(n%i==0)
return 0;//非素数
return 1;//素数
}
long long pow(long long a,long long p){
long long ans=1,base=a,mod=p;
while(p){
if(p&1)
ans=(base*ans)%mod;
base=(base*base)%mod;
p>>=1;
}
return ans;
}
int main(){
long long p,a;
while(scanf("%lld %lld",&p,&a)&&(p||a)){
if(pow(a,p)==a&&su(p)==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}