P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)[a,b] (5 \le a < b \le 100,000,000)[a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。
输入输出格式
输入格式:
第 1 行: 二个整数 a 和 b .
输出格式:
输出一个回文质数的列表,一行一个。
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 bool check(int x) 5 { 6 int a[20], flag = 1; 7 while (x > 0) 8 { 9 a[flag] = x % 10; 10 x /= 10; 11 flag++; 12 } 13 for (int i = 1; i <= flag / 2; i++) 14 if (a[i] != a[flag - i]) 15 return 0; 16 return 1; 17 } 18 bool check2(int x) 19 { 20 if (x == 2) return 1; 21 for (int i = 2; i <= sqrt(x); i++) 22 if (x % i == 0) 23 return 0; 24 return 1; 25 } 26 int main() { 27 long x, y; 28 cin >> x >> y; 29 if (x == 2) 30 cout << "2" << endl; 31 if (x % 2 == 0) 32 x++; 33 for (int i = x; i <= y; i = i + 2) 34 { 35 if (check(i) == 0) 36 continue; 37 if (check2(i) == 0) 38 continue; 39 cout << i << endl; 40 41 } 42 return 0; 43 }