Cod sursa(job #2740639)

Utilizator muiepulicimatacutactu muiepulici Data 13 aprilie 2021 18:03:15
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <fstream>

bool ciur[2000001];

int gen_ciur(int n) {
	if (n <= 1)
		return 0;

	ciur[0] = ciur[1] = true;

	int i, j;

	int taieri = 2;

	for (i = 4; i <= n; i += 2) {
		ciur[i] = true;
		++taieri;
	}

	for (i = 3; i * i <= n; i += 2) {
		if (ciur[i])
			continue;

		for (j = i * i; j <= n; j += i << 1) {
			if (!ciur[j]) {
				ciur[j] = true;
				++taieri;
			}
		}
	}

	return (n + 1) - taieri;
}

int main() {	
	std::ifstream fin("ciur.in");
	std::ofstream fout("ciur.out");

	int N;
	fin >> N;

	fout << gen_ciur(N);

	fin.close();
	fout.close();

	return 0;
}