代码如下:
//数的反转、判断素数、进制间的转化
#include<iostream>
#include<stdio.h>
using namespace std;
int num[100];//记录转化为radex进制数每位的数组
bool isprime(int x){//判断素数
if(x==1){
return false;
}
for(int i=2;i*i<=x;i++){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
int n,radix;
while(true){
cin>>n;
if(n<0){
return 0;
}
cin>>radix;
for(int i=0;i<100;i++){
num[i]=0;
}
int sum;//sum为n反转后的十进制数
int r;//r为余数
int k=0;
int n1=n;
while(n!=0){
r=n%radix;
num[k++]=r;
n/=radix;
}
int ans=1;
sum=0;
for(int i=k-1;i>=0;i--,ans=ans*radix){
sum+=num[i]*ans;
}
if(isprime(n1)&&isprime(sum)){
cout<<"Yes"<<endl;
continue;
}
cout<<"No"<<endl;
}
return 0;
}