Cod sursa(job #2428291)
Utilizator | Data | 4 iunie 2019 16:54:25 | |
---|---|---|---|
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=1;
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);
}