思路
1、先判断回文,联想到快速排序的思想;
2、判断素数,格式输出。
Description:
求m~n(m≥10,n≤10000)之间的回文素数,所谓回文素数,即这个数既是回文又是素数。程序首先要判断某个数是否是回文,再判断是否是素数。如果是回文素数,则保存于数组中,并按6位域宽输出,每行输出5个。
Input:
m n
Output:
m~n之间的回文素数,每个数占6位,每行限输出5个
Sample Input:
10 10000
Sample Output:
11 101 131 151 181
191 313 353 373 383
727 757 787 797 919
929
#include <iostream>
#include "string"
#include "cmath"
#include "iomanip"
using namespace std;
/**
* kkmd66
* @return
*/
int main() {
int a, b, count = 0;
cin >> a >> b;
for (int i = a; i <= b; ++i) {
//找回文
string str = to_string(i);
bool flag_1 = true;
int begin = 0, end = str.size() - 1;
while (begin <= end) {
if (str[begin] != str[end]) {
flag_1 = false;
break;
}
begin++;
end--;
}
//找质数
if (flag_1) {
bool flag_2 = true;
for (int j = 2; j < sqrt(i * i); ++j) {
if (i % j == 0) {
flag_2 = false;
break;
}
}
//输出
if (flag_2) {
cout << fixed << setw(6) << right << setfill(' ') << i;
count++;
if (count == 5) {
cout << endl;
count = 0;
}
}
}
}
return 0;
}