Pagini recente » Cod sursa (job #550708) | Cod sursa (job #687968) | Cod sursa (job #935645) | Cod sursa (job #550665) | Cod sursa (job #521541)
Cod sursa(job #521541)
#include <cstring>
#include <cstdio>
#define VALUE(i) (((v[i/32])>>(i%32))&1)
int main()
{
freopen ("ciur.in","r",stdin);
freopen ("ciur.out","w",stdout);
int N;
scanf ("%d",&N);
int rez = 1;
int *v = new int[N/32+1];
memset(v,0,sizeof(int)*(N/32+1));
bool stop = false;
for (int i=3;i<=N;i+=2)
if (!VALUE(i))
{
rez++;
if (stop) continue;
if (i*i > N) stop = true;
for (int j=i*i;j<=N;j+=i<<1)
v[j/32] |= 1<<(j%32);
}
delete v;
printf ("%d\n",rez);
return 0;
}