晓轩

博客园 首页 联系 订阅 管理

#include<iostream>
#include<cstdio>

typedef __int64 int64;

bool is_prime(int64 n)
{
 for(int64 i=2;i*i<n;i++)
  if(n%i==0)
   return false;
 return n!=1;
}

int64 mod_pow(int64 x,int64 n,int64 mod)
{
 int64 ans=1;
 while(n>0)
 {
  if(n&1)
   ans=ans*x%mod;
  x=x*x%mod;
  n>>=1;
 }
 return ans;
}

int main()
{
 int64 p,a;
 while(scanf("%I64d%I64d",&p,&a)!=EOF)
 {
  if(0==p&&0==a)
   break;
  if(!is_prime(p)&&a==mod_pow(a,p,p))
   printf("yes\n");
  else
   printf("no\n");
 }
 return 0;
}

posted on 2013-08-17 18:18  晓轩  阅读(128)  评论(0)    收藏  举报