Cod sursa(job #629060)

Utilizator bixcabc abc bixc Data 2 noiembrie 2011 16:50:22
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <cstdio>
#include <algorithm>
using namespace std;

#define Nmax 2000010

int N, sol;
unsigned int ciur[Nmax / 32];

void Ciur () {
	
	int i, j;
	for (i = 2; i <= N; i++)
		if ( ((ciur [i >> 5] >> (i & 31)) &1) == 0 ) {
			sol++;
			for (j = i + i; j <= N; j+= i)
				ciur[j >> 5]|= (1 << ( j & 31 ));
		}
	
	printf ("%d\n", sol);
}


int main () {

	freopen ("ciur.in", "r", stdin);
	freopen ("ciur.out", "w", stdout);
	
	scanf ("%d", &N);
	Ciur ();
	
	return 0;
}