Cod sursa(job #421992)

Utilizator mordredSimionescu Andrei mordred Data 21 martie 2010 23:32:41
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
// Simionescu Andrei, -/-/2010
// http://infoarena.ro/problema/ciur
// Dificultate: - 
// Categorii: -

#include <cstdio>
#include <vector>
using namespace std;

#define NMAX 2000001

bool ciur[NMAX];

void zciur(int n);

int main(){
	freopen( "ciur.in", "r", stdin );
	freopen( "ciur.out", "w", stdout );
	
	int n, sum = 0;
	
	scanf("%d", &n);
	
	zciur( n );
	
	for(int i = 3; i <= n; i+=2 )
	   if(!ciur[i])
	       ++sum;
	
	printf("%d\n", sum);
	
//	for( int i = 1; i <= 100; ++i)
//	   printf("%d %s\n",i,(ciur[i]||i%2==0)?"":"prim");
	
	
	
	return 0;
}



void zciur(int n){
    for( int i = 3; i <= n; i += 2 )
        if(!ciur[i])
           for( int k = 1; i * (2*k+1) <= n; ++k )
                ciur[i * (2*k+1)] = 1;
}