Cod sursa(job #514275)

Utilizator blastoiseZ.Z.Daniel blastoise Data 18 decembrie 2010 12:00:24
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.39 kb
#include <stdio.h>

int i,j,N,sol;
char p[125010];

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

	scanf("%d",&N);

	for(i=1;4*i*i+4*i+1<=N;i++)
		if((p[i/8]&(1<<(i&7)))==0)
			for(j=2*i*i+2*i;2*j+1<=N;j+=(2*i+1))
				p[j/8]|=(1<<(j&7));

	sol=1;
	for(i=1;2*i+1<=N;i++)
		if((p[i/8]&(1<<(i&7)))==0) sol++;

	printf("%d\n",sol);

	return 0;
}