Cod sursa(job #338863)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 7 august 2009 11:11:36
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <stdio.h>

int v[260000];
int n,nr;

void ciur()
{
	int i,j;
	for (i=1; ((i*i) << 1) + (i << 1) <=n ; i++)
		if (!((v[i >> 3] >> (i & 7)) & 1) )
			for (j=((i*i) << 1) + (i << 1); (j << 1) < n; j+=(i << 1)+1)
				v[j >> 3]|=(1 << (i & 7));
	for (i=nr=1; (i << 1) < n; i++)
		if (  !((v[i >> 3] >> (i & 7)) & 1)  )
			nr++;
}
int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	scanf("%d",&n);
	ciur();
	printf("%d",nr);
	fclose(stdin); fclose(stdout);
	return 0;
}