Cod sursa(job #374651)

Utilizator tomescu_dorinelTomescu Mihai Dorinel tomescu_dorinel Data 17 decembrie 2009 17:32:17
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include <stdio.h>

unsigned char v[250001];

int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	int n,i,j,counter;
    counter=0;
	scanf("%d",&n);
	for(i=2;i<=n;i++){
		if((v[i/8]&(1<<(i%8)))==0){
			for(j=i+i;j<=n;j+=i){
				v[j/8]=(v[j/8]|(1<<(j%8)));
				}
			}
		}
	for(i=2;i<n;i++){
		if((v[i/8]&(1<<(i%8)))==0){
			counter=counter+1;
			}
		}
	printf("%d",counter);
	return 0;
}