题来自洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
题目:题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)a,b( 一亿)间的所有回文质数。

输入格式
第 1 行: 二个整数 a 和 b .

输出格式
输出一个回文质数的列表,一行一个。

输入输出样例
输入 #1 复制
5 500
输出 #1 复制
5
7
11
101
131
151
181
191
313
353
373
383
看了大佬的帖子,我才明白偶数位只有11为回文,这样我们可以缩小范围,同时偶数除了2也都不是质数,然后打表。

#include<stdio.h>
bool isprime(int n)
{
    //判断数位是否是偶数和是否是质数
	int i;
	int x=n; int cnt=0;
	while(n)
	{
   
		n/=10;
		cnt++;
	}
	if(cnt%2==0)
	return false;
	for(i=2;i*i<=x;i++)
	if(x%i==0)	return false;
	return true; 
 } 
 bool huiwen(int n)//判断是否是回文,这还是要好好想想的。。我想了很久。
 {
   
 	int y=n;
 	int num=0;
 	while(y)
 	{
   
 		num=num*10+y%10;
 		y/=10;
	 }
	 if(num==n)	return 1;
	 return 0;
 }
 int c[10000]={
   将表隐藏一下};
 int main()
 {
   
 	int a,b;
 	int cnt=0;
 	scanf("%d%d",&a,&b);
 	for(int i=0;;i++)
 	{
   
	 if(i>5959)	break;
 	if(c[i]>=a&&c[i]<=b)
	printf("%d\n",c[i]);	 
 	if(c[i]>b)	break;
	 }
 }