vector prime_sieve(int n) { vector is_prime(n+1, true); is_prime[0] = is_prime[1] = false; vector primes; for (int i = 2; i <= n; i++) { if (!is_prime[i]) continue; primes.push_back(i); for (int j = i; j <= n; j += i) is_prime[j] = false; } return primes; }