Cod sursa(job #374654)

Utilizator stef2503Stefan Stan stef2503 Data 17 decembrie 2009 17:35:44
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.41 kb
#include <stdio.h>

unsigned char v[250001];

int main ()
{
	freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);
	int n, i, j, c=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) {
			c=c+1;
		}
	}
	printf("%d", c);
	return 0;
}