Pagini recente » Cod sursa (job #506462) | Cod sursa (job #3284375) | Cod sursa (job #1184575)
#include <cstdio>
const int NMAX = 2000000/2/8 + 5;
unsigned char V[NMAX];
int ciur(int N)
{
int count;
int i, j;
count = 1;
for (i = 1; ((i * i) << 1) + (i << 1) <= N; ++i)
if ((V[i >> 3] & (1 << (i & 7))) == 0) {
for (j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= N;
j += (i << 1) + 1)
V[j >> 3] |= (1 << (j & 7));
}
for (i = 1; (i << 1) + 1 <= N; ++i)
if ((V[i >> 3] & (1 << (i & 7))) == 0)
++count;
return count;
}
int main()
{
freopen("ciur.in", "r", stdin);
freopen("ciur.out", "w", stdout);
int N;
scanf("%d", &N);
printf("%d\n", ciur(N));
return 0;
}