Cod sursa(job #875696)

Utilizator howsiweiHow Si Wei howsiwei Data 10 februarie 2013 17:57:05
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.38 kb
#include <fstream>
#include <bitset>
#include <cmath>
using namespace std;

int main() {
	ifstream fin("ciur.in");
	ofstream fout("ciur.out");
	int n; fin >> n;
	bitset<2000001> sieve;
	int sqrt_n=sqrt(n);
	for (int i=3,j; i<=sqrt_n; ) {
		for (j=i*i; j<=n; j+=(i<<1)) sieve.set(j);
		while ((i+=2)<=sqrt_n && sieve[i]);
	}
	fout << n-n/2-sieve.count();// 1 counted, 2 not counted
	return 0;
}