Cod sursa(job #2834248)

Utilizator Radu_marioRadu Mario Radu_mario Data 16 ianuarie 2022 18:18:45
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>
using namespace std;

ifstream file_in("ciur.in");
ofstream file_out("ciur.out");

int i, j;
bitset<2000000> sieve;

void gen_sieve(int N)
{
	sieve[0] = sieve[1] = true;
	for (i = 4; i <= N; i += 2) sieve[i] = true;
	for (i = 3; i * i <= N; i += 2)
		if (!sieve[i])
			for (j = i * i; j <= N; j += 2 * i)
				sieve[j] = true;
}

void cnt_primes(int N, int& primes)
{
	for (i = 3; i <= N; i += 2)
		if (!sieve[i]) ++primes;
}

int main()
{
	int N, primes = 1; file_in >> N;
	gen_sieve(N); cnt_primes(N, primes);

	file_out << primes;
	return 0;
}