Cod sursa(job #2303659)

Utilizator Salamandra01Felmeri Zsolt Salamandra01 Data 16 decembrie 2018 18:16:04
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.54 kb
#include <iostream>
#include <fstream>

#define N 1 << 17

using namespace std;
unsigned char L[N];

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

    for(int i = 3; i <= n; i += 2){
        if(L[i >> 4] & (1 << ((i >> 1) & 7))){
            continue;
        }
        db++;

        for(int j = (i << 1) + i; j <= n; j += (i << 1)){
            L[j >> 4] |= (1 << ((j >> 1) & 7));
        }
    }

    printf("%d\n", db + 1);

    return 0;
}