Cod sursa(job #2664626)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 29 octombrie 2020 00:17:24
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>
using namespace std;
const int NMAX = 2000000;
const int base = 32;
int ciur[(NMAX >> 6) + 5];
int main()
{
    freopen("ciur.in", "r", stdin);
    freopen("ciur.out", "w", stdout);
    int n, nr, i, j;
    scanf("%d", &n);
    nr = 1;
    for(i = 3 ; i <= n ; i += 2)
        if( !(ciur[(i >> 1) / base] & (1 << ((i >> 1) % base))) )
        {
            if(i <= n / i)
                for(j = i * i ; j <= n ; j += (i << 1))
                    ciur[(j >> 1) / base] |= (1 << ((j >> 1) % base));
            nr ++;
        }
    printf("%d\n", nr);
    return 0;
}