Cod sursa(job #634204)

Utilizator ContraPunctContrapunct ContraPunct Data 15 noiembrie 2011 20:07:36
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<fstream>
const int Nmax = 2000005;
using namespace std;

char ciur[Nmax];
int n;

ifstream fin("ciur.in");
ofstream fout("ciur.out");

int Ciur ()
{
	int nr=1;
	long long i = 0 ,j = 0;
	for(i=3; i<=n; i+=2)
		if(ciur[i] == 0 ) 
		{
			j = i*i;
			for( ; j<=n; j += (i+i))
				if(ciur[j] == 0)
					ciur[j]='1';
			++nr;
		}
	return nr;
}

int main()
{
	int x,i;
	fin>>n;
	if( n == 0 || n == 1)  
		x = 0;
	else
		if( n==2 )
			x=1;
		else
			x = Ciur();
	fout<<x<<"\n";
	fout.close();
	fin.close();
	return 0;
}