#include<stdio.h>
#include<string.h>
int zhishu(int n)
{
int i;
if(n==0||n==1)
{
return 0;
}
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
int huiwen(int n)
{
int t=0,x;
x=n;
while(n!=0)
{
t=t*10+n%10;
n=n/10;
}
if(x==t)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int i,t,j;
if(a%2==0)
{
a=a+1;
}
for(i=a;i<=b;i+=2)
{
t=huiwen(i);
if(t==1)
{
j=zhishu(i);
if(j==1)
{
printf("%d\n",i);
}
}
}
return 0;
}
在本题中,首先写两个判断是否为质数和是否为回文数的函数
在huiwen函数建立一个整形t,t为原数字n反转后的数字,反转完成后判断t和原数字n是否相等,相等则为回文数,返回1,否则返回0。
在主函数中,先判断第一个输入的数是否为奇数,因为偶数绝对不会是质数(2除外),如果不是就加1,再由于回文数的数量少于质数的数量,所以首先判断是否为回文数,再判断是否为质数。