#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
using namespace std;
typedef long long ll;
int a[1000100];
bool isprime(int x){
for(int i=2;i*i<=x;i++){
if(x%i==0) return false;
}
if(x==0 || x==1) return false;
else
return true;
}
int main()
{
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif // LOCAL
int n,r;
int d[111]={0};
while(scanf("%d",&n)!=EOF){
if(n<0) break;
scanf("%d",&r);
int len=0;
int ans=n;
while(n){
d[len++]=n%r;
n/=r;
}
for(int i=0;i<len;i++){
n=n*r+d[i];
}
if(isprime(n)&&isprime(ans)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}