int n;
cin >> n;
vector<int> v(n + 1);
vector<int> q;
v[1] = 1;
for(int i = 2; i <= n; i++) {
if(!v[i]) q.push_back(i);
for(auto p:q) {
if(i * p > n) break;
v[i * p] = 1;
if(i % p == 0) break;
}
}
时间复杂度为O(n)比埃氏筛法的时间复杂度小,一般就用欧拉筛法