#include <iostream>
#include <cmath>
#include<vector>
using namespace std;
vector<int>v;
bool isprime(int n)
{
if(n<=1)
return false;
for(int i=2;i*i<=n;++i)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int re(int n,int d)//转化成进制数
{
if(n==0)
return 0;
while(n>0)//转化成d进制 并且已经反转了
{
v.push_back(n%d);
n/=d;
}
int sum=0;
int cnt=0;
for(int i=v.size()-1;i>=0;--i) //还原成10进制
{
sum+=pow(d,cnt)*v[i];
cnt++;
}
return sum;
}
int main()
{
int n,d;
while(cin>>n)
{
if(n<0)
break;
cin>>d;
v.clear();
if(isprime(n)==true&&isprime(re(n,d))==true)
{
cout<<"Yes"<<endl;
}
else
cout<<"No"<<endl;
}
return 0;
}
题目意思
给一个10进制数和一个基数
如果10进制数是素数并且 这个10进制转化成基数制之后反转过来得到的10进制数也是素数 那么yes 否则 no