题意
如果一个数本身是素数,而且在d进制下反转后的数在十进制下也是素数,就输出Yes,否则就输出No
思路
判断输入是否为负数,判断n是否为素数,把n转换为d进制再反过来转换为10进制,判断是否为素数
别人的AC代码
#include<iostream>
#include <math.h>
using namespace std;
bool IsPrime(int n){
if(n<2) return false;
double sqr = sqrt(1.0*n);
for(int i=2;i<=sqr;i++)
if(n%i==0) return false;
return true;
}
int main(){
int n,m;
while(scanf("%d",&n)!=EOF){
if(n<0) break;
scanf("%d",&m);
if(!IsPrime(n)){
printf("No\n");continue;
}
int len=0,arr[100];
do{
arr[len++] = n%m;
n = n/m;
}while(n!=0);
for(int i=0;i<len;i++)
n = n*m+arr[i];
printf("%s",IsPrime(n)?"Yes\n":"No\n");
}
return 0;
}