Cod sursa(job #2128930)

Utilizator tiberiu_alexandruComan Tiberiu-Alexandru tiberiu_alexandru Data 12 februarie 2018 11:59:14
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;

#define dmax 2000005

bool C[dmax];

/*
    C[i] == 1 => i nu e nr prim
    C[i] == 0 => i e nr prim
*/

void ciur()
{
    int i, j;
    C[0] = C[1] = 1;

    for (i = 2; i <= sqrt(dmax); i++)
    {
        if (C[i] == 0)
        {
            for (j = i*i; j <= dmax; j=j+i)
                C[j] = 1;
        }
    }
}

int main()
{
    ifstream in ("ciur.in");
    ofstream out ("ciur.out");

    ciur();

    int n, nr = 0, i;

    in >> n;

    for (i = 1; i <= n; i++)
    {
        if (C[i] == 0)
        {
            nr++;
        }
    }

    out << nr;

    return 0;
}