Cod sursa(job #162171)

Utilizator reSpawnPopescu Ioan reSpawn Data 19 martie 2008 16:43:19
Problema Ciurul lui Eratosthenes Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <stdio.h>
const int MAXSIZE = 2000000/2+1;
char p[MAXSIZE];

//p[i] == 0 if 2*i + 1 is prime
int ciur( int n )
{
	int i, j, nr = 1;
	for( i = 1; 2*i*(i + 1) <= n; ++i )
		if(p[i] == 0)
			for( j = 2*i*(i + 1); 2*j + 1 < n; j+= 2*i + 1 )
				p[j] = 1;

	for ( i=1; 2 * i + 1 <= n; ++i) 
		if (p[i] == 0) nr++;
	return nr;
}

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

	return 0;
}