#include <iostream>
#include<cmath>
using namespace std;
bool isPrime(int num)
{
int i;
for(i = 2;i<=num;i++)
{
if(num%i==0)
break;
}
if(i==num)
return true;
else
return false;
}
int str2int(string integer,int D)
{
int res = 0;
int i = integer.size()-1;
int exp = 0;
while(i>=0)
{
res +=(integer[i]-'0')*pow(D,exp);
exp++;
i--;
}
return res;
}
string reverseInput(int N,int D)
{
string res = "";
while(N)
{
res +=N%D+'0';
N = N/D;
}
return res;
}
int main()
{
int N;
int D;
bool con1,con2;
while(1)
{
cin>>N;
if(N <0)
break;
cin>>D;
con1 = isPrime(N);
con2 = isPrime(str2int(reverseInput(N,D),D));
if(con1&&con2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}