#include<iostream>
#include<math.h>
using namespace std;
int reverse_num(int n,int d)
{
int x=0;
while(n>=d)
{
x=x*d+n%d;
n/=d;
}
x=x*d+n;
return x;
}
bool isPrime(int num)
{
if (num <= 2)
{
return num == 2;
}
if (num % 2 == 0)
{
return false;
}
int iSqrt = (int)sqrt(double(num));
int i;
//it is inefficient
/*
for (i = 3; i <= iSqrt,num%i>0; i+=2)
;
*/
for (i = 3; i <= iSqrt; i+=2)
{
if(num%i==0)
break;
}
return i>iSqrt ? true : false;
}
int main()
{
int n,d;
cin>>n;
while(n>=0)
{
cin>>d;
if(isPrime(n) && isPrime(reverse_num(n,d)))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
cin>>n;
}
return 0;
}
1015. Reversible Primes (20) @ PAT (Advanced Level) Practise
最新推荐文章于 2017-12-30 10:19:28 发布