Cod sursa(job #1816487)

Utilizator EuAlexOtaku Hikikomori EuAlex Data 26 noiembrie 2016 15:47:55
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#include <cmath>

using namespace std;

bool c[2000005];

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

    int n, lim, rasp;
    scanf("%d", &n);

    c[0] = c[1] = 1;
    lim = (int)sqrt((double)n);

    for(int i = 4; i <= n; i = i + 2)
        c[i] = 1;

    for(int i = 3; i <= lim; i = i + 2)
        if(c[i] == 0)
            for(int j = i * i; j <= n; j = j + 2 * i)
                c[j] = 1;

    rasp = 0;

    for(int i = 2; i <= n; ++ i) {
        if(c[i] == 0)
            ++ rasp;
    }

    printf("%d", rasp);

    return 0;
}