题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805495863296000
题目分析:
进制转换+质数判断。
参考代码:
#include <cstdio>
#include <cmath>
using namespace std;
int ans[20];
bool isPrime(int n)
{
if(n<=1) return false;
for(int i=2;i <= (int)sqrt(1.0*n) ;i++)
if(n%i==0) return false;
return true;
}
int main(){
int n, b;
while(scanf("%d %d", &n, &b)){
if(n < 0) return 0;
int cnt = 0, sum = 0;
if(!isPrime(n)) { //若该数不为质数
printf("No\n"); continue;
}
do{
ans[cnt++] = n % b;
n /= b;
}while(n);
for(int i = 0; i < cnt ; i++){ //计算翻转后的十进制数
sum += ans[i]*pow(b, cnt - 1 - i);
}
if(isPrime(sum)) printf("Yes\n");
else printf("No\n");
}
return 0;
}