Cod sursa(job #645289)

Utilizator tak3rStefan Mirea tak3r Data 8 decembrie 2011 23:03:45
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
#include<cstring>

using namespace std;

long ciur( long n ){
  
  long long j,i,M=n-1;
  char mask[n];
  
  memset( mask, 0, n / 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(){
  
  long n;
  
  freopen( "ciur.in", "r", stdin );
  freopen( "ciur.out", "w", stdout );
  
  scanf( "%ld", &n );
  
  printf( "%ld", ciur( n ) );
  
  return 0;
  
}