#include <iostream>
using namespace std;
bool isprime(int a){
if(a==1)return false;
for(int i=2;i*i<=a;i++)
if(a%i==0)return false;
return true;
}
int main() {
int n,d;
while (scanf("%d",&n)!=EOF){
if(n<0)break;
scanf("%d",&d);
if(isprime(n)==false){
printf("No\n");
continue;
}
int len=0,arr[100];
do{ //转换为d进制
arr[len++]=n%d;
n=n/d;
}while(n>0);
for(int i=0;i<len;i++) //计算d进制下反转对应的10进制数是否为素数
n=n*d+arr[i];
printf("%s\n", isprime(n) ? "Yes" : "No");
}
return 0;
}
PAT 1015 Reversible Primes (20 分) 素数 d进制
于 2022-02-13 17:53:34 首次发布