Cod sursa(job #2428288)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 4 iunie 2019 16:52:42
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.42 kb
#include<cstdio>
char v[2000001];
int n,i,j,k;
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(!(v[i>>5]&(1<<(i&31))))
            for(j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+=(i<<1)+1)
                v[j>>5]|=(1<<(j&31));
    for(i=1;2*i+1<=n;++i)
        if(!(v[i>>5]&(1<<(i&31))))
            k++;
    printf("%d",k+1);
}