测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题