自己的MacBook上输入5, 100000000编译时间只有0.5s, 但是输到评测机并在开O2的情况下最后一个点成功TLE了, 求助大佬 orz
#include <cstdio>
#include <cmath>
const unsigned int PRIME_MAX = 100000009;
unsigned int primes[PRIME_MAX];
bool isComp[PRIME_MAX];
bool isPalindrome(unsigned int num)
{
unsigned int tmp = num, mun = 0;
while (tmp)
{
mun = mun*10 + tmp%10;
tmp /= 10;
}
if (num == mun) return true;
else return false;
}
int main()
{
unsigned int n, m, cnt=0;
std::scanf("%d%d", &n, &m);
for (unsigned int i=2; i<=m; i++)
{
if (!isComp[i])
{
int digit = log10(i) + 1;
if (i >= n && isPalindrome(i) && ( (i==11) ^ (digit%2) ))
primes[cnt++] = i;
for (unsigned int j=i*2; j<=m; j+=i)
isComp[j] = true;
}
}
for (int i=0; i<cnt; i++)
std::printf("%d\n", primes[i]);
}