题目描述可逆素数是指一个素数的各位数字顺序倒过来以后构成的数仍然是素数,比如素数 107 各位数字顺序倒过来以后是701,701是素数,故 107是可逆素数。求出 [m,n]范围内全部的可逆素数。输入输入两个正整数m和n。(100<m<n<1000)输出例如素数107是可逆素数,则701也是可逆素数,只能输出两者中最小的即107,且最后按升序输出。
输入输出样例
样例输入 #1
101 150
样例输出 #1
107
113
149
#include <stdio.h>
#include <math.h>
int IsPrime(int n)
{
int i;
if (n==2)
return(1);
if (n%2==0)
return(0);
for(i=3; i<=n/2+1; i+=2)
if (n%i==0)
return(0);
return(1);
}
int reverse(int n)
{
int t[5];
int tem=n,p=0,re=0;
while(tem)
{
t[p++]=tem%10;
tem/=10;
}
for(int j=0;j<p;j++)
{
re+=t[j]*pow(10,p-1-j);
}
return re;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
for(int j=m;j<=n;j++)
{
if(IsPrime(j)&&IsPrime(reverse(j))&&j!=reverse(j))
printf("%d\n",j);
}
return 0;
}