Cod sursa(job #1410243)

Utilizator delia_99Delia Draghici delia_99 Data 30 martie 2015 22:46:41
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <cstdio>
using namespace std;
int n,i,j,nr=0;
bool ap[2000000];
int main()
{
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    scanf("%d",&n);
    for(i=1; ((i*i)<<1)+(i<<1)<=n; ++i)
        if((ap[i>>3] & (1<<(i&7)))==0)
        {
            for(j=(((i*i)<<1)+(i<<1)); (j<<1)<n ; j+=(i<<1)+1)
                ap[j>>3] |= (1<<(j&7));
        }
    for(i=1; (i<<1)<n; ++i)
        if((ap[i>>3]&(1<<(i&7)))==0)
            ++nr;
    printf("%d",nr);
    return 0;
}