Cod sursa(job #634181)

Utilizator ContraPunctContrapunct ContraPunct Data 15 noiembrie 2011 19:45:47
Problema Ciurul lui Eratosthenes Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 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;
	int i = 0 ,j = 0;
	i=2;
	for( j = 4; j<=n; j+=2)
		ciur[j] ='1';
	for(i=3; i<=n; i+=2)
		if(ciur[i] == '0' ) 
		{
			for( j = i+i ; j<=n; j += 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
		{
			for(i=0;i<=n;i++)
				ciur[i]='0';
			x = Ciur();
		}
	fout<<x<<"\n";
	fout.close();
	fin.close();
	return 0;
}