输入一个数,如果其本身是质数,而且其反转后的数也是质数,就输出 Yes ,否则就输出 No 。
注意:反转需要将 num 转换为 d 进制的情况下进行,再转换为十进制判断是否为质数
#include<iostream>
#include<cmath>
using namespace std;
int reversenum(int n,int d){
int temp,rnum = 0;
while(n){
temp = n % d;
rnum = rnum * d + temp;
n /= d;
}
return rnum;
}
bool isprime(int num){
if(num == 1) return false;
if(num == 2 || num==3) return true;
for(int i=2;i<=sqrt(num);i++){
if(num%i==0) return false;
}
return true;
}
int main(){
int n,d;
cin >> n >> d;
while(n>0){
if( isprime(n) && isprime(reversenum(n,d)) ) cout << "Yes" << endl;
else cout << "No" << endl;
cin >> n >> d;
}
}