Cod sursa(job #645288)

Utilizator tak3rStefan Mirea tak3r Data 8 decembrie 2011 22:54:15
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<cstdio>
#include<cstring>

using namespace std;

#define NMAX 2000001

int ciur( int n ){
  
  int j,i,M=n-1;
  char mask[NMAX];
  
  memset( mask, 0, NMAX / sizeof( char ) );
  
  for( i=4; i<=n; i+=2 ){
    mask[i] = 1;
    --M;
  }
  
  for( i=3; i<=n; i+=2 ){
    if( mask[i] == 0 ){
      for( j=i*i; j<=n; j+=i ){
        if( mask[j] == 0 && j % i == 0 ){
          mask[j] = 1;
          --M;
        }
      }
    }
  }
  
  return M;
}

int main(){
  
  int n;
  
  freopen( "ciur.in", "r", stdin );
  freopen( "ciur.out", "w", stdout );
  
  scanf( "%d", &n );
  
  printf( "%d", ciur( n ) );
  
  return 0;
  
}