Cod sursa(job #398860)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 19 februarie 2010 16:15:28
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 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,t;
	for (i=2; i*i<=n; i++)
	{
		t=i>>3;
		if (!(marc[t] & 1<<(i-(t<<3))))
		{
			for (j=i*i; j<=n; j+=i)
			{
				t=j>>3;
				if (!(marc[t] & 1<<(j-(t<<3))))
					marc[t]+=1<<(j-(t<<3));
			}
		}
	}
	for (i=2; i<=n; i++)
	{
		t=i>>3;
		if (!(marc[t] & 1<<(i-(t<<3))))
			nr++;
	}
	printf("%d\n",nr);
	return 0;
}