Cod sursa(job #1097843)

Utilizator dropsdrop source drops Data 4 februarie 2014 00:01:16
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
/* Ciurul lui Erathostenes folosind bitset */
#include <cstdio>
#include <cmath>
#include <bitset>
#define MAX 2000001
using namespace std;

bitset<MAX> P;

void Ciur()
{
    int i = 2, lim = sqrt(MAX);
    while (i < lim)
    {
        while (P[i]) i++;
        for (int j = i * i; j < MAX; j += i) P[j] = 1;
        i++;
    }
}

int main()
{
    int N, K = 0;
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    Ciur();
    scanf("%d", &N);
    for (int i = 2; i <= N; i++)
        if (!P[i]) K++;
    printf("%d\n", K);
}