Cod sursa(job #509855)

Utilizator liviu12345Stoica Liviu liviu12345 Data 11 decembrie 2010 21:10:09
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <cstdlib>

using namespace std ;

const long long unsigned int MAXN = 400000000 ;
const long long int Stop = 20000;

bool ciur [MAXN + 1] ;

int main ( )
{
  freopen ( "ciur.in" , "r" , stdin ) ;
  freopen ( "ciur.out" , "w" , stdout ) ;
  long long unsigned int N , K = 0 , L ;
  register long long unsigned int i , j;
  scanf ( "%llud" , &N ) ;
  for ( i = 4 ; i <= MAXN ; i += 2 )
    ciur [ i ] = true ;
  ++K ;
  for ( i = 3 ; i <= Stop ; i += 2 )
  {
    if ( ciur [ i ] )
      continue ;
    L = i << 1 ;
    for ( j = i * i ; j <= MAXN ; j += L )
      ciur [ j ] = true ;
    ++K ;
  }
  for ( i = Stop + 1 ; i <= MAXN ; i += 2 )
  {
    if ( ciur [ i ] )
      continue ;
    ++K ;
  }
  printf ( "%llud" , K ) ;
}