Cod sursa(job #193003)

Utilizator Omega91Nicodei Eduard Omega91 Data 1 iunie 2008 20:56:35
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <cstdio>
#include <cmath>
#include <bitset>
int main()
{
	const int NMAX = 2000001;
	FILE *f1, *f2;
	std::bitset<NMAX> v;
	int n, i, j, rasp = 1, incr, sq;
	f1 = fopen("ciur.in", "r");
	f2 = fopen("ciur.out", "w");
	fscanf(f1, "%d", &n);
	sq = sqrt(n);
	for (i = 4; i <= n; i += 2) v[i] = 1;
	for (i = 3; i <= sq; i += 2) 
		if (!v[i]) {
			for (j = i * i; j <= n; j += i)
				v[j] = 1;
		}
	for (i = 3; i <= n; i += 2) if (!v[i]) ++rasp;
	
	fprintf(f2, "%d\n", rasp);
	fclose(f1);
	fclose(f2);
	return 0;
}