//
// main.cpp
// PAT_1015. Reversible Primes
//
// Created by wjq on 17/4/3.
// Copyright © 2017年 wjq. All rights reserved.
//
#include <iostream>
#include <string.h>
using namespace std;
bool prime[100005];
void solvePrime()
{
memset(prime,false,sizeof(prime));
prime[0]=prime[1]=true;
for(int i=2;i<100005;i++)
{
if(prime[i]==false)
{
for(int j=i+i;j<100005;j+=i)
prime[j]=true;
}
}
}
bool toD(int N,int D)
{
int n=1,i=0,sum[10],decimal=0;
while(N!=0)
{
sum[i++]=N%D;
N/=D;
}
while(i--)
{
decimal+=sum[i]*n;
n*=D;
}
if(prime[decimal]==false)
return true;
return false;
}
int main(int argc, const char * argv[])
{
solvePrime();
int N,D;
while(cin>>N&&N>=0)
{
cin>>D;
if( prime[N]==false && toD(N,D) )
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
简单题~