Cod sursa(job #1490083)

Utilizator MayuriMayuri Mayuri Data 22 septembrie 2015 18:36:03
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <cmath>

using namespace std;

const int NMAX = 2000000;
bool c[NMAX + 5];

void prime() {
    int lim;
    lim = (int)sqrt((double) NMAX);
    c[0] = c[1] = 1;
    for(int i = 4; i <= NMAX; i += 2) {
        c[i] = 1;
    }
    for(int i = 3; i <= lim; i += 2) {
        if(!c[i]) {
            for(int j = i * i; j <= NMAX; j += 2 * i)
                c[j] = 1;
        }
    }
}

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

    prime();

    int n, sol = 1;

    scanf("%d", &n);

    for(int i = 3; i <= n; i += 2) {
        if(!c[i])
            ++ sol;
    }

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

    return 0;
}