求助:55分,4个AC,剩下全是WA:
#include<iostream>
#include<cmath>
using namespace std;
int IsPal(int n);
int IsPri(int n);
int digit(int n);
int main() {
int a, b;
cin >> a >> b;
if (b > 10000000)b = 10000000;//偶数位回文数:非素数
int i = a;
int di = 0;
while (i <= b) {
if (i == 5)cout << i++ << endl;
else if (i == 7)cout << i++ << endl;
else if (i == 11)cout << i++ << endl;
else if (i > 11) {
di = digit(i);//偶数位回文数:非素数
if (di % 2 == 0)i = pow(10, di);
else {
if (i % 2 == 0)i++;//偶数跳过
else {
if (IsPal(i)) {
if (IsPri(i))cout << i << endl;
}
i = i + 2;//奇数+2,仍未奇数
}
}
} else i++;
}
return 0;
}
int IsPal(int n) {
int temp = n, i = 0;
while (temp != 0) {
i = i * 10 + temp % 10;
temp /= 10;
}
if (i == n)return 1;
else return 0;
}
int IsPri(int n) {
int i = 2, max = ceil(sqrt(n));
while (i <= max) {
if (n % i == 0)break;
i++;
}
if (i >= max)return 1;
else return 0;
}
int digit(int n) {
int temp = n, di = 0;
while (temp) {
di++;
temp /= 10;
}
return di;
}