A40970. 素数回文
填空题
较易
知识点
题目描述
素数回文
题目描述
小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
输入格式
输入a和b(5 <= a < b <= 100,000,000)
输出格式
按从小到大输出a,b之间所有满足条件的素数回文数
样例输入
5 500
样例输出
5
7
11
101
131
151
181
191
313
353
373
383
参考答案
include<stdio.h>
#include<math.h>
int is_prime(int a)
{
if (a == 2 || a == 3 || a == 5)
return 1;
if (a % 6 != 1 && a % 6 != 5)
return 0;
int k = sqrt(a);
int i;
for (i = 5; i <= k; i++)
if (a%i == 0)
return 0;
return 1;
}
int main()
{
int a, b;
scanf("%d%d",&a,&b);
if (a <= 2 && 2 <= b)
printf("2\n");
if (a <= 3 && 3 <= b)
printf("3\n");
if (a <= 5 && 5 <= b)
printf("5\n");
if (a <= 7 && 7 <= b)
printf("7\n");
if (a <= 11 && 11 <= b)
printf("11\n");
int i;
int j;
int judge = 1;
if (b>=101)
for (i = 10; i <= 9999; i++)
{
for (j = 0; j <= 1; j++)
{
int k = i;
int k2 = i;
if (j == 0)
k /= 10;
while (k)
{
k2 = k2 * 10 + k % 10;
k /= 10;
}
if (a<=k2 && k2 <= b)
{
if (is_prime(k2))
printf("%d\n",k2);
}
if (k2 > b&& j == 0)
{
judge = 0;
break;
}
}
if (judge != 1)
break;
}
return 0;
}
上一题
下一题