【问题描述】
求11到n之间(包括n),既是素数又是回文数的整数有多少个。
(提示:回文数指左右对称的数,如:292,333)
【输入格式】:
一个大于11小于1000的整数n。
【输出格式】:
11到n之间的素数回文数个数。
【输入样例】:
23
【输出样例】:
1
【参考程序】
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
bool prime(int x) { // 判断素数
int i = 2;
if (x <= 1) {
return false;
} else {
while ((i<=sqrt(x)) && (x%i!=0)) {
i++;
}
}
return i>sqrt(x);
}
int hws(int x) { // 求回文数
int s = 0;
while (x > 0) {
s = s*10 + x%10;
x /= 10;
}
return s;
}
int main() {
int cnt=0, n;
cin >> n;
for (int i=11; i<=n; i++) {
if ((prime(i)) && (hws(i)==i)) { // 如果是素数且是回文数,计数器加1
cnt++;
}
}
cout << cnt;
return 0;
}