欧拉筛

· · 题解

#include <bits/stdc++.h>
#define lld long long
using namespace std;
int n, a[100005], f[100005];
vector<int>sum;

int main() {
    cin >> n;
    for (int i = 2; i <= n; i++) {
        a[i] = i;
    }
    for (int j = 2; j <= n; j++) {
        if (f[j] == 0)
            sum.push_back(j);
        for (int i = 0; i <= sum.size() && sum[i]*j <= n; i++) {
            f[j * sum[i]] = 1;
            if (j % sum[i] == 0)
                break;
        }
    }
    for (int i = 0; i < sum.size(); i++) {
        cout << sum[i] << ' ';
    }

    return 0;
}