Cod sursa(job #1414025)
| Utilizator | Data | 2 aprilie 2015 11:52:09 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <cstdio>
using namespace std;
int n,i,j,nr=1;
int ap[125005];
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)+1<=n; j+=(i<<1)+1)
ap[j>>3] |= (1<<(j&7));
}
for(i=1; (i<<1)+1<=n; ++i)
if((ap[i>>3] & (1<<(i&7)))==0)
++nr;
printf("%d\n",nr);
return 0;
}
