Cod sursa(job #900024)

Utilizator vendettaSalajan Razvan vendetta Data 28 februarie 2013 17:23:17
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 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, phi[nmax];
bool viz[nmax];

void citeste(){
    f >> n;
}

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

void rezolva(){
    bagaCiur();
    g << phi[n] << "\n";
}

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

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

    return 0;
}