模板-质数筛

chenfy27的刷题记录 / 2024-10-23 / 原文

埃氏筛法,时间复杂度O(nloglogn)。

std::vector<int> minp, prime;
void sieve(int n) {
	minp.assign(n + 1, 0);
	prime.clear();
	for (int i = 2; i <= n; i++) {
		if (minp[i] == 0) {
			minp[i] = i;
			prime.push_back(i);
			for (int j = 2 * i; j <= n; j += i) {
				if (minp[j] == 0) {
					minp[j] = i;
				}
			}
		}
	}
}