Cod sursa(job #720584)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 22 martie 2012 19:20:55
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<assert.h>
#include<math.h>

#include<algorithm>
#include<vector>

using namespace std;

const int knmax = 2000005;
int upper, sol;
bool sieve[knmax];

void read(){
  assert(freopen("ciur.in", "r", stdin) != NULL);

  scanf("%d", &upper);
}

void init(){
  for(int i = 1; i <= upper; ++i)
    sieve[i] = true;
}

void solve(){
  init();

  long long i, j;
  for(i = 2; i <= upper; ++i)
    if(sieve[i] == true){
      ++sol;
      for(j = i * i; j <= upper; j = j + i)
        sieve[j] = false;
    }
}

void write(){
  assert(freopen("ciur.out", "w", stdout) != NULL);

  printf("%d",sol);
}

int main(){
  read();
  solve();
  write();
  return 0;
}