Cod sursa(job #846237)

Utilizator test_13testing test_13 Data 1 ianuarie 2013 19:04:24
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include <stdio.h>
#define Max 2000001
unsigned char p[Max/8+1];
int n,nr;

void ciur()
{
	int i=2;
	while(i<=1414)
	{
		while(p[i/8]&(1<<(i%8)))i++;
		for(int j=i*i;j<Max;j+=i)p[j/8]|=1<<(j%8);
		i++;
	}
	for(int i=2;i<=n;i++)
		if(!(p[i/8]&(1<<(i%8))))nr++;
}

int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
		scanf("%d",&n);
		ciur();
		printf("%d\n",nr);

	return 0;
}