Pagini recente » Cod sursa (job #3233893) | Cod sursa (job #2329429) | Cod sursa (job #1082522) | Cod sursa (job #3147765) | Cod sursa (job #2163823)
#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 (i = 2; i * i <= n; i++) {
if (GET_BIT(i) == 0) {
for (j = i * i; j <= n; j += i) {
SET_BIT(j);
}
}
}
for (cnt = 0, i = 2; i <= n; i++) {
cnt += GET_BIT(i) == 0;
}
return cnt;
}
int main(void)
{
int n;
freopen("ciur.in", "r", stdin);
freopen("ciur.out", "w", stdout);
scanf("%d", &n);
printf("%d", prime(n));
return 0;
}