Cod sursa(job #2499974)

Utilizator radustn92Radu Stancu radustn92 Data 27 noiembrie 2019 00:43:41
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
#include <bitset>
#include <vector>
using namespace std;
const int NMAX = 2000505;
int N;
vector<int> pr;
short int lp[NMAX];

int main() {
	freopen("ciur.in", "r", stdin);
	// freopen("ciur.out", "w", stdout);

	scanf("%d", &N);
	pr.reserve(150000);
	for (int i = 2; i <= N; i++) {
		int currentLowestPrime = lp[i];

		if (lp[i] == 0) {
			pr.push_back(i);
			currentLowestPrime = i;
		}

		for (int j = 0; j < pr.size() && i * pr[j] <= N && pr[j] <= currentLowestPrime; j++) {
			lp[i * pr[j]] = pr[j];
		}
	}

	printf("%d\n", (int) pr.size());
	return 0;
}