快速幂;
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int prime(const int p)
{
for(int i=3; i*i<=p; i++)
if(p%i==0)
return 0;
return 1;
}
int power(const int a,const int p)
{
long long res=1,n=p,ta=a;
while(n)
{
if(n&1)
res=res*ta%p;
ta=ta*ta%p;
n=n>>1;
}
return res;
}
int main(void)
{
int a,p;
while(scanf("%d%d",&p,&a),a&&p)
{
if(prime(p))
printf("no\n");
else
{
if(power(a,p)==a)
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}
原文地址:http://blog.csdn.net/loolu5/article/details/41256893