自己测试是对的,提交就mle了
#include<iostream>
#include<string>
#include<algorithm>
#define max_size 100000000
using namespace std;
int num[max_size] = { 0 };
int prime[max_size] = { 0 };//存放素数的数组
//void primejudge( int max);
void quickprimejudge(int max);
bool pd_h(int x)//小数据回文数判断
{
int y = x, num = 0;//int y=x,防止x被改变
while (y != 0)
{
num = num * 10 + y % 10;//上一次数字的记录进位再加上下一位数
y /= 10;
}
if (num == x) return 1;
else return 0;
}
int main() {
int min = 0;
int max = 0;
cin >> min >> max;
quickprimejudge(max);
for (int j = min;j <= max;j++) {
//stl法判断
/*if (num[j] == 0) {
string str = to_string(j);
string str1 = str;
reverse(str.begin(), str.end());
if (str == str1) {
cout << j << endl;
}
}*/
//数据较小时普通方法判断
if (pd_h(j)&&num[j]==0) {
cout << j << endl;
}
}
system("pause");
return 0;
}
//void primejudge( int max) {//0代表是质数
// for (int i = 2;i <= max;i) {
// if (num[i] == 0) {
// for (int j = 2;j * i <= max;j++) {
// num[j * i] = 1;
// }
// }
// }
//}
void quickprimejudge(int max) {
int number = 0;
for (int i = 2;i <= max;i++) {
if (!num[i]) {
prime[number++] = i;
}
for (int j = 0;j < number && prime[j] * i <= max;j++) {
num[prime[j] * i] = 1;//合数
if (i % prime[j] == 0) {
break;
}
}
}
}