Cod sursa(job #1305840)

Utilizator gabrieligabrieli gabrieli Data 30 decembrie 2014 11:12:52
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <fstream>
#include <vector>
using namespace std;

int main() {
    ifstream fin("ciur.in");
    ofstream fout("ciur.out");
    
    const int N = 1e6+1;
    vector<bool> isPrime(N, true);
    
    int n, nr;
    
    fin >> n;

    for (int i = 1; 2 * i + 1 <= n; ++i)
        if (isPrime[i])
            for (int j = 3*i + 1; 2 * j + 1 <= n; j += 2 * i + 1)
                isPrime[j] = false;
    
    nr = (n >= 2) ? 1 : 0;
    for (int i = 1; 2 * i + 1 <= n; ++i)
        if (isPrime[i]) ++nr;
    
    fout << nr << endl;
    
    return 0;
}