Cod sursa(job #900054)

Utilizator vendettaSalajan Razvan vendetta Data 28 februarie 2013 17:28:12
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <deque>

using namespace std;

ifstream f("ciur.in");
ofstream g("ciur.out");

#define nmax 2000005
#define ll long long

int n;
bool viz[nmax];

void citeste(){
    f >> n;
}

void bagaCiur(){
    for(int i=2; i<nmax; ++i){
        if (viz[i] == 1) continue;// i nu e numar prim
        // i e prim
        for(int j=i*2; j<nmax; j+=i){
            viz[j] = 1;
        }
    }
}

void rezolva(){
    bagaCiur();
    int cnt = 0;
    for(int i=2; i<=n; ++i)
        if (viz[i] == 0) ++cnt;
    g << cnt << "\n";
}

int main(){
    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;
}