线性筛法 更快

参考埃及筛法的例题

线性筛法

image-20210713174458549

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 10000010;

int primes[N], cnt;
bool st[N];

void get_primes(int n) {
	for (int i = 2; i <= n; i++) {
		if (!st[i]) primes[cnt++] = i;
		for (int j = 0; primes[j] <= n / i; j++) {
			st[primes[j] * i] = true;
			if (i % primes[j] == 0) break;    // primes[j]一定是i的最小质因子
		}
	}
}

int main() {
	int n;
	cin >> n;
	get_primes(n);
	cout << cnt << endl;
	return 0;
}
posted @ 2021-07-13 17:57  JK~  阅读(47)  评论(0)    收藏  举报