原题:1015. Reversible Primes (20)
解题思路:
按题意逆置数字,再判断两个数是否都为素数即可。
C++代码如下:
#include<cstdio>
int num[30];
int reverseNum(int n, int radix)
{
int cnt = 0;
while(n > 0)
{
num[cnt++] = n % radix;
n /= radix;
}
int ans = 0;
for(int i = 0; i < cnt; i++)
ans = ans * radix + num[i];
return ans;
}
bool isPrime(int n)
{
if(n < 2)
return false;
for(int i = 2; i * i <= n; i++)
if(n % i == 0)
return false;
return true;
}
int main()
{
int n, radix;
while(scanf("%d", &n) != EOF)
{
if(n < 0)
break;
scanf("%d", &radix);
int ans = reverseNum(n, radix);
if(isPrime(ans) && isPrime(n))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}