Cod sursa(job #707933)

Utilizator valiro21Valentin Rosca valiro21 Data 6 martie 2012 09:24:16
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 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;
		nrp++;
		
		for(long i=pr;i<=lim;i+=step)
			viz[i]=1;
		
		pr++;
		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);
}