转。。。不太难,没理解一开始
#include <stdio.h>
#include <stdlib.h>
class A
{
public:
void run();
private:
bool isprime(int num);
int reverse(int num,int radix);
};
void A::run()
{
int n,d,rn;
while(true)
{
scanf("%d",&n);
if(n<0) break;
scanf("%d",&d);
if(!isprime(n))
{
printf("No\n");
}
else
{
rn=reverse(n,d);
if(isprime(rn)) printf("Yes\n");
else printf("No\n");
}
}
}
int A::reverse(int num,int radix)
{
int tmp[100];
int index=0;
while(num>0)
{
tmp[index++]=num%radix;
num/=radix;
}
int k=1,i,sum=0;
for(i=index-1;i>=0;i--)
{
sum+=tmp[i]*k;
k*=radix;
}
return sum;
}
bool A::isprime(int num)
{
if(num<=1) return false;
int i;
for(i=2;i<num;i++)
{
if(num%i==0) return false;
}
return true;
}
int main()
{
// freopen("test.in","r",stdin);
A *a=new A;
a->run();
return 0;
}