需要注意的是1不是素数,reverse后可能会出现1的情况,这时候就是考验你素数判断函数写的suo不suo的时候了。
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
#include <string.h>
using namespace std;
int judge(int num)
{
if(num==1)
return 0;
for(int i=2;i<num;i++)
{
if(num%i==0)
return 0;
}
return 1;
}
int reverseprime(int num,int d)
{
int tmp=0;
while(num!=0)
{
tmp=tmp*d+num%d;
num=(num-num%d)/d;
}
return tmp;
}
int main()
{
int num,d,i,j,k;
while(scanf("%d",&num)!=EOF)
{
if(num<0)
return 0;
else if(num==1||num==0)
{
printf("No\n");
return 0;
}
else
{
scanf("%d",&d);
i=reverseprime(num,d);
j=judge(i);
k=judge(num);
if(j==1&&k==1)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}