Pagini recente » Cod sursa (job #2218483) | Cod sursa (job #745479) | Cod sursa (job #1756253) | Cod sursa (job #2715300) | Cod sursa (job #2002985)
#include <stdio.h>
#include <stdlib.h>
int N;
#define N_MAX (2000000 / 32 + 1)
int a[N_MAX];
void mark(int k) {
a[k / 32] = a[k / 32] | (1 << (k % 32));
}
int isMarked(int k) {
int index = a[k / 32];
int mask = index & (1 << (k % 32));
return mask != 0;
}
int main() {
int contor = 0;
freopen("ciur.in", "r", stdin);
freopen("ciur.out", "w", stdout);
scanf("%d", &N);
for(int i = 2; i < N; i++) {
if(!isMarked(i)) {
contor++;
for(int j = i * i; j <= N; j += i) {
mark(j);
}
}
}
printf("%d\n", contor);
return 0;
}