#include <iostream>
#include <vector>
void sieveOfEratosthenes(std::vector<bool> &isPrime, int n) {
isPrime[0] = isPrime[1] = false;
for (int p = 2; p * p <= n; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= n; i += p) {
isPrime[i] = false;
}
}
}
}
int main() {
int limit = 10000000;
std::vector<bool> isPrime(limit + 1, true);
sieveOfEratosthenes(isPrime, limit);
std::vector<int> primeNumbers;
for (int i = 2; i <= limit; i++) {
if (isPrime[i]) {
primeNumbers.push_back(i);
}
}
std::cout << "Các số nguyên tố nhỏ hơn 10,000,000 là: ";
for (int prime : primeNumbers) {
std::cout << prime << " ";
}
return 0;
}