Cod sursa(job #153417)

Utilizator TabaraTabara Mihai Tabara Data 10 martie 2008 15:20:46
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <stdio.h>
using namespace std;

#define in "ciur.in"
#define out "ciur.out"
#define NMAX 2000004
#include <vector>

char OK[NMAX];
int N, nrsol;
vector<int> V;

int main()
{
    freopen( in, "r", stdin );
    freopen( out, "w", stdout );
    
    scanf( "%d", &N );
    int i, j;
    for ( i = 2; i <= N; ++i ) OK[i] = 1;
     
    for ( i = 2; i * i <= N; ++i )
    {
        if ( OK[i] == 1 )
        {
             j = 2;
             while ( i*j <= N )
             {
                   OK[i*j] = 0;
                   j++;
             }
        }
    }
    
    for ( i = 2; i <= N; ++i ) if ( OK[i] == 1 ) nrsol++;
    printf( "%d", nrsol );
    /*if ( nrsol <= 1000 ) 
    {
        for ( i = 2; i <= N; ++i ) 
            if ( OK[i] == 1 ) 
               printf( "%d ", i );           
    }
    else 
    {
         nrsol = 0;
         for ( i = N; i > 1; --i )  
         {
             if ( OK[i] == 1 ) { V.push_back( i ); if ( V.size() == 1000 ) break; }
         }
         for ( i = V.size()-1; i >= 0; i-- )
             printf( "%d ", V[i] );             
    }*/
    return 0;
}