Cod sursa(job #520081)

Utilizator lcodrutlucianLazar Codrut-Lucian lcodrutlucian Data 7 ianuarie 2011 13:27:06
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <fstream>
#include <iostream>
using namespace std;

const int MAX = 2*1000*1000+1;

int n,c;
bool p[MAX];

int main() {
	ifstream in("ciur.in");
	ofstream out("ciur.out");

	in >> n;
	p[0]=false; p[1]=false; p[2]=true;

	for(int i=3;i<=n;i+=2){
		p[i]=true; p[i+1]=false;
	}

	for(int i=3;i<=n/2;i+=2){
		if(p[i]){
			for(int j=2;i*j<=n;++j){
				p[i*j]=false;
			}
		}
	}
	
	c=0;
	for(int i=0;i<=n;++i){
		if(p[i]) ++c;
		// if(p[i]) cerr<<i<<" ";
	}

	out << c << "\n";

	in.close();
	out.close();
	return 0;
}