题目描述
考点:没什么好说的,进制转换跟素数判断。
主要坑点:没看懂题目。。。
reversible prime:指的是N是素数,并且转换为radix进制后反转变为十进制也是素数。。。。。
#include<iostream>
#include<algorithm>
using namespace std;
bool jud_prime(int n){
if(n == 1) return false;
for(int i = 2;i <= n / i;i++) if(n % i == 0) return false;
return true;
}
int change_radix(int x,int radix){
string s;
while(x){
char flag = x%radix + '0';
s = flag + s;
x /= radix;
}
reverse(s.begin(),s.end());
int res = 0;
int k = 1;
for(int i = s.length()-1;i >= 0;i--){
if(s[i] != '0') res += ((s[i]-'0')*k);
k *= radix;
}
return res;
}
bool jue_reversible(int x,int radix){
int reverse_x = change_radix(x,radix);
if(jud_prime(x) && jud_prime(reverse_x))
return true;
return false;
}
int main(){
while(true){
int n,d;
cin>>n;
if(n < 0)break;
else cin>>d;
if(jue_reversible(n,d)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}