方法:利用数组,%,/运算,将数逆置,并判断数是否为质数
注意点:1,10^5;2,理解清楚题意,题目是在进制为D的条件下逆置。
#include <iostream>
bool prime[100010]={0};
void getprime(){
prime[0]=prime[1]=true; //
for(int i=2;i<100010;i++){
if(prime[i]==false){
for(int j=i*2;j<100010;j+=i){
prime[j]=true; //
}
}
}
}
int main(){
int D,N;
getprime();
while(true){
scanf("%d",&N);
if(N<0) break;
scanf("%d",&D);
int sum2=0,sum1=N;
while(sum1){
sum2=sum2*D+sum1%D;
sum1/=D;
}
if(!prime[N]&&!prime[sum2]) printf("Yes\n");
else printf("No\n");
}
return 0;
}