Liệt kê và đếm các số đảo ngược trong 1 đoạn số nguyên tố a,b (sử dụng sàng nguyên tố eratosthenes.) code c++ các bác giúp em với

1 câu trả lời

#include <iostream>
#include <algorithm>
#include <sstream>
#define all(x) (x).begin(), (x).end()
using namespace std;

const int lim = 1e6;
int a, b;
bool np[lim + 5];

string to_string(int n) {
 stringstream ss;
 ss << n;
 string s;
 ss >> s;
 return s;
}

bool palind(int n) {
    string s = to_string(n);
    string st = s;
    reverse(all(st));
    return s == st;
}

void sieve() {
    for (int i = 2; i <= b; i++) {
        if (!np[i]) {
            if (i >= a) {
                if (palind(i))
                    cout << i << ' ';
            }
            if (i * i > b) continue;
            for (int j = i * i; j <= b; j += i)
                np[j] = 1;
        }
    }
}

int main() {
    cin >> a >> b;
    sieve();
}