Cod sursa(job #706861)

Utilizator valiro21Valentin Rosca valiro21 Data 5 martie 2012 20:09:30
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <cstdio>
#define NMax 2000001
#define N2Max (NMax+1)>>1
bool viz[N2Max];

long ciur(long N)
{
	long nrp=1,pr=1,lim=(N-1)>>1,step;

	while(pr<=lim)
	{
		step=pr<<1+1;
		viz[pr]=1;
		nrp++;
		for(long i=pr;i<=lim;i+=step)
			viz[i]=1;
		while(viz[pr])
			pr++;
	}

	return nrp;
}

int main()
{
	freopen("ciur.in","rt",stdin);
	freopen("ciur.out","wt",stdout);

	long N;

	scanf("%ld",&N);

	long x=ciur(N);

	printf("%ld",x);
}