my code:
#include <bits/stdc++.h>
using namespace std;
std::vector<int> eulerSieve(int n) {
std::vector<bool> isPrime(n + 1, true); // 标记是否为素数
std::vector<int> primes; // 存储素数
isPrime[0] = isPrime[1] = false; // 0和1不是素数
for (int i = 2; i <= n; ++i) {
if (isPrime[i]) {
primes.push_back(i); // i是素数,加入列表
}
// 筛选掉所有i的倍数
for (int j = 0; j < primes.size() && i * primes[j] <= n; ++j) {
isPrime[i * primes[j]] = false; // 标记为非素数
if (i % primes[j] == 0) {
break; // 如果i已经是primes[j]的倍数,停止筛选
}
}
}
return primes;
}
int main() {
std::ios::sync_with_stdio(0);
int n;
int q;
cin >> n;
cin >> q;
vector<int>b;
vector<int>a = eulerSieve(n);
for (int i = 1; i <= q; i++) {
int x;
cin >> x;
b.push_back(a[i - 1]);
}
for (int i = 0; i < q; i++) {
cout << b[i] << endl;
}
return 0;
}
样例过了,为什么内部不行?