Cod sursa(job #477393)

Utilizator theodora_maneaManea Theodora Maria theodora_manea Data 14 august 2010 13:39:22
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <stdio.h>

long i,n,j,nr;
unsigned char p[250000];

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