Note
- 10进制与n进制转换:短除,倒着取余数。
Code:
#include<bits/stdc++.h>
using namespace std;
bool is_prime(int n){
if(n<=1) return false;
for(int i=2;i<=(int)sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int n,d;
while(cin>>n){
if(n<0) break;
cin>>d;
int m=0;
int num[100]={0};
if(is_prime(n)==true){
int i=0;
while(n>0){
num[i]=n%d;
i++;
n/=d;
}
for(int j=0;j<i;j++){
m+=num[j]*pow(d,i-j-1);
}
if(is_prime(m)==true){
printf("Yes\n");
}
else{
printf("No\n");
}
}
else
printf("No\n");
}
return 0;
}