Cod sursa(job #1612787)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 25 februarie 2016 00:39:39
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>

const int NMAX = 2000010;

char ciur[NMAX];
int ANS;
int N;

int main () {
    freopen ("ciur.in", "r", stdin);
    freopen ("ciur.out", "w", stdout);

    scanf ("%d", &N);

    ciur[0] = ciur[1] = 1;
    int p = 2;
    while (p * p <= N) {
        for (int i = p * p; i <= N; i += p) {
            ciur[i] = 1;
        }

        while (ciur[++p] == 1);

        ANS++;
    }

    for (int i = p; i <= N; i++) {
        if (ciur[i] == 0) {
            ANS ++;
        }
    }

    printf ("%d\n", ANS);

    return 0;
}