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();
}