Cod sursa(job #398859)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 19 februarie 2010 16:10:17
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include <stdio.h>
#define NMAX 250004
int n,nr;
char marc[NMAX];
int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	scanf("%d",&n);
	int i,j;
	for (i=2; i*i<=n; i++)
		if (!(marc[i/8] & 1<<(i%8)))
		{
			for (j=i*i; j<=n; j+=i)
				if (!(marc[j/8] & 1<<(j%8)))
					marc[j/8]+=1<<(j%8);
		}
	for (i=2; i<=n; i++)
		if (!(marc[i/8] & 1<<(i%8)))
			nr++;
	printf("%d\n",nr);
	return 0;
}