http://www.patest.cn/contests/pat-a-practise/1015
思路:用数组存储转化进制以后的各位,既可以避免溢出,也方便”反转“。
#include <iostream>
#include <cmath>
using namespace std;
bool is_prime(int num){
if(num<2){
return false;
}else{
for(int i=2;i<num;++i){
if(num%i==0){
return false;
}
}
return true;
}
}
int change_radix(int N,int D){ //将N转化为D进制反转后再转化为10进制返回
int a[100]={0};
int ret=0,digit=0;
while(N>0){
a[digit]=N%D;
++digit;
N/=D;
}
for(int i=digit-1;i>=0;--i){
ret+=a[i]*pow(D,digit-i-1);
}
return ret;
}
int main()
{
int N,D;
while(cin>>N){
if(N<0) break;
cin>>D;
if(is_prime(N)){
if(is_prime(change_radix(N,D))){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}else{
cout<<"No"<<endl;
}
}
return 0;
}