Cod sursa(job #572393)

Utilizator PatrikStepan Patrik Patrik Data 5 aprilie 2011 11:47:23
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
	#include<stdio.h>
	#define MAX 2000001
	FILE *f , *g;
	long n , v[MAX] , nr ;
	
	void citire();
	void generare();
	void solve();
	void tipar();
	
	int main()
	{
		citire();
		generare();
		solve();
		tipar();
		return 0 ;
	}
	
	void citire()
	{
		f=fopen("ciur.in" ,"r" );
		fscanf(f ,"%ld" , &n );
		fclose(f);
	}
	
	void generare()
	{
		for ( int  i = 2  ; i<= n ; ++i )
			v[i] = i;
	}
	
	void solve()
	{
		for ( long i = 2 ; i<n ; ++i )
		{
			if(!v[i])
				continue;
			for ( long j  = i+1 ; j <=  n ; ++j )
				if(v[j] && j%i== 0)
					v[j] = 0 ;
		}
		for ( int  i = 2 ; i<= n ; ++i )
			if(v[i])
				nr++;
	}
	
	void tipar()
	{
		g=fopen("ciur.out" ,"w" );
		//for ( long i  = 1  ;  i<= n ; ++i )
			//fprintf(g ,"%ld " , v[i] );
		fprintf(g , "%ld" , nr );
		fclose(g);
	}