为什么会超时,reverse函数时间复杂度过高吗?
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int digit(int x) {
if ((x >= 1000 && x <= 10000) || (x >= 100000 && x <= 1000000))
return 0;
else
return 1;
}
int IsPrime(int a)
{
int i;
if (a == 1)
return 0;
if (a % 2 == 0)
return 0;
else
{
for (i = 2; i * i <= a; i++)
{
if (a % i == 0)
return 0;
}
return 1;
}
}
int main() {
int a, b;
cin >> a >> b;
if (a < 5 || b>100000000) {
return 0;
}
for (int i = a; i <= b; i++) {
string m = to_string(i);
string n = m;
reverse(m.begin(), m.end());
if (digit(i) && m==n && IsPrime(i)) {
cout << i << endl;
}
}
return 0;
}