回文素数C++TLE助求

过样例,但TLE

题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数;

输入格式
二个整数 a 和 b

输出格式
输出一个回文质数的列表,一行一个

样例
样例输入

5 500
样例输出

5
7
11
101
131
151
181
191
313
353
373
383
数据范围与提示
提示:找出所有的回文数再判断它们是不是质数(素数)

代码

```c++
#include <bits/stdc++.h>
using namespace std;
int main() {
    ios::sync_with_stdio(false); 
    int Min, Max, Length;
    char HUIC[105];
    string HUI;
    cin >> Min >> Max;
    for (int i = Min; i <= Max; i++) {
        if (i >= 1000 & i <= 9999) {
            i = 10000;
            goto End;
        }
        if (i >= 100000 & i <= 999999) {
            i = 1000000;
            goto End;
        }
        sprintf(HUIC, "%d", i);
        HUI = HUIC;
        Length = HUI.length();
        for (int j = 0; j < Length; j++) {
            if (HUIC[j] != HUIC[Length - j - 1])
                goto End;
        }
        if (i % 2 == 0) goto End;
        for (int j = 3; j * j <= i; j += 2) {
            if (i % j == 0)
                goto End;
        }
        cout << i << "\n";
        End:;
    }
    return 0;
}
运行结果及报错内容

与样例相同

也有点慢。请问有没有类似线性筛(欧拉筛)的实现?