Cod sursa(job #1894069)

Utilizator BahamutLux Arcadia Bahamut Data 26 februarie 2017 14:13:50
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#include <cmath>
#include <bitset>

using namespace std;

int const NMAX=13000000;

bitset <NMAX + 5> c;
int ciur(int n) {
    int lim = (int)sqrt((double) n);
    for(int i = 3; i <= lim; i = i + 2)
    if(c[i] == 0)
        for(int j = i * i; j <= NMAX; j = j + 2 * i)
            c[j] = 1;
    int rasp = 0;
    for(int i = 2; i <= NMAX; ++ i) {
        if(c[i] == 0 && i <= n)
            ++ rasp;
    }
    printf("%d\n", rasp);
}

int main() {
    freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);
    int n;
    scanf("%d", &n);
	ciur(n);

    return 0;
}