Cod sursa(job #481878)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 1 septembrie 2010 21:37:02
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<bitset>
using namespace std;

int main()
{
	long long n,num=0;
	fstream fin("ciur.in", fstream::in);
	fstream fout("ciur.out", fstream::out);
	fin>>n;
	//cout<<n<<endl;
	//ector<char> v;
	//v.resize(n+1);
	bitset<2000002> bits;
	//for(int j=0; j<n; j++)
	//	bits[j]=0;
	//v[4]=1;
	for(int j=4; j<n; j+=2)
		bits[j]=1;
	for(int i=3; i<n; i+=2)
	{
		//cout<<(char)(v[i]+48)<<" ";
		if(i*i>n)
			break;
		if(!bits[i])
		{
			for(long long j=i*i; j<n; j+=i)
			{
				bits[j]=1;
			}
		}
	}
	for(int i=2; i<n; ++i)
	{
		if(!bits[i])
		{
			num++;
			//cout<<i<<" ";
		}
	}
	
	fout<<num<<endl;
	//cout<<endl<<num<<endl;
	
	
	fin.close();
	fout.close();
	return 0;
}