Cod sursa(job #707933)
| Utilizator | Data | 6 martie 2012 09:24:16 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.43 kb |
#include <cstdio>
#define NMax 2000001
#define N2Max (NMax+1)>>1
bool viz[N2Max];
long ciur(long N)
{
long nrp=1,pr=1,lim=(N-1)>>1,step;
while(pr<=lim)
{
step=(pr<<1)+1;
nrp++;
for(long i=pr;i<=lim;i+=step)
viz[i]=1;
pr++;
while(viz[pr])
pr++;
}
return nrp;
}
int main()
{
freopen("ciur.in","rt",stdin);
freopen("ciur.out","wt",stdout);
long N;
scanf("%ld",&N);
long x=ciur(N);
printf("%ld",x);
}