Pagini recente » Cod sursa (job #158459) | Cod sursa (job #1447461) | Cod sursa (job #1035212) | Cod sursa (job #1590604) | Cod sursa (job #2163814)
#include <stdio.h>
#include <limits.h>
#define NMAX 2000000 / CHAR_BIT
#define GET_BIT(x) (ciur[(x) / CHAR_BIT] & (1 << (x & (CHAR_BIT - 1))))
#define SET_BIT(x) (ciur[(x) / CHAR_BIT] |= (1 << (x & (CHAR_BIT - 1))))
static char ciur[NMAX];
static int prime(int n)
{
int i, j, cnt;
for (cnt = 0, i = 2; i * i <= n; i++) {
if (GET_BIT(i) == 0) {
cnt++;
for (j = i * i; j <= n; j += i) {
SET_BIT(j);
}
}
}
return cnt;
}
int main(void)
{
int n;
freopen("ciur.in", "r", stdin);
freopen("ciur.in", "w", stdout);
scanf("%d", &n);
printf("%d", prime(n));
return 0;
}