Cod sursa(job #530442)

Utilizator feelshiftFeelshift feelshift Data 7 februarie 2011 19:48:13
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
// http://infoarena.ro/problema/ciur
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

#define maxSize 2000001

int primeNumbers;
vector<bool> isPrime(maxSize,true);

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

int main() {
	int limit;

	in >> limit;

	for(int i=3;i<=limit;i=i+2)	// sarim numerele pare
		if(isPrime[i]) {
			// cu (i << 1) <=> pow(i,2) sarim din nou numerele pare
			for(int k=i;k<=limit;k=k+(i << 1))
				isPrime[k] = false;

			primeNumbers++;
		}

	out << ++primeNumbers;	// il adaugam de doi (singurul numar prim par

	in.close();
	out.close();

	return (0);
}