Description
An emirp (prime spelled backwards) is a prime number whose reversal is also a prime.
For example, 17 is a prime and 71 is a prime. So 17 and 71 are emirps.
Write a program that reads an interger n, and output the nth emirps.
Input
An interger n (1<=n<=50).
Output
The nth emirp.
Sample Input
10
Sample Output
71
// Date:2020/4/9
// Author:xiezhg5
#include <stdio.h>
int isPrime(long n);
long reverseNum(long n);
int main(void)
{
int num, i, cnt = 0;
while (1)
{
scanf("%d",&num);
if ((num>=1) && (num<=50) ) break;
}
i = 2;
while (1)
{
//判断原来的n与反转后的n是否是素数
if ( isPrime(i) && isPrime(reverseNum(i)) ) cnt ++;
if (cnt == num) break;
i ++; //i是累加器,计数
}
printf("%d",i);
return 0;
}
//判断是否素数
int isPrime(long n)
{
int i;
if (n == 2)
return 1;
for (i = 2; i*i <= n;i++)
if (n % i == 0)
return 0;
return 1;
}
//反转后的n
long reverseNum(long n)
{
long res = 0;
while (n > 0)
{
//求各进制位上的数字并反转
res = res * 10 + n % 10;
n /= 10;
}
return res;
}