Cod sursa(job #492221)

Utilizator BitOneSAlexandru BitOne Data 13 octombrie 2010 20:32:16
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
/* 
 * File:   main.cpp
 * Author: bitone
 *
 * Created on October 13, 2010, 6:01 PM
 */
#include <fstream>
#include <cstdlib>
#define MAX_N 2000000/16+1

using namespace std;

/*
 * 
 */
char v[MAX_N];
int main(int argc, char** argv)
{
    int N, i, j, _count=1;
    ifstream in( "ciur.in" );
    in>>N;
    for( i=1; ((i*i)<<1)+(i<<1) < N; ++i )
        if( 0 == ( v[i>>3] & 1<<(i&7) ) )
            for( j=((i*i)<<1)+(i<<1); (j<<1) < N; j+=(i<<1)+1 )
                v[i>>3]|=1<<(i&7);
    for( i=1; (i<<1)+1 <= N; ++i )
        if( 0 == ( v[i>>3] & 1<<(i&7) ) )
            ++_count;
    ofstream out( "ciur.out" );
    out<<_count<<'\n';
    return EXIT_SUCCESS;
}