Cod sursa(job #374647)

Utilizator andreea1coolBobu Andreea andreea1cool Data 17 decembrie 2009 17:23:00
Problema Ciurul lui Eratosthenes Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.41 kb
#include<stdio.h>
unsigned char v[125001];
int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	int n,i,j,o=0;
    scanf("%d",&n);
    v[0]|=1;
    v[0]|=(1<<1);
    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]|=(1<<(j%8));
			}
		}
	}
	for(i=1;i<=n;i++){
		if((v[i/8]&(1<<(i%8)))==0){
			o++;
		}
	}
	printf("%d",o);
	return 0;
}