Cod sursa(job #177189)

Utilizator vladcyb1Vlad Berteanu vladcyb1 Data 12 aprilie 2008 13:52:28
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#include <stdlib.h>

#define FIN "ciur.in"
#define FOUT "ciur.out"
#define BIT 8

#define NMAX 250000

int A[NMAX], N;
FILE * fin, * fout;


int main()
{
	int i, nr = 0, t, j;
	fin = fopen( FIN, "r" );
	fout = fopen( FOUT, "w" );
	fscanf( fin, "%d", &N );
	for( i = 2; i <= N; i++ )
	{
		t = ( A[i >> 3] & ( 1 << i % 8 ) );
		if( !t )
		{
			for( j = 1; j <= N/i; j++ )
				A[(i*j)>>3] |=  1 << ( (i*j) % 8 );
			nr++;
		}
		
	}
	fprintf( fout, "%d\n", nr );
	fclose( fin );
	fclose( fout );
	return 0;
	
}