Pagini recente » Cod sursa (job #2498833) | Cod sursa (job #873281) | Cod sursa (job #410549) | Cod sursa (job #1003587) | Cod sursa (job #165526)
Cod sursa(job #165526)
// Ciurul lui Eratosthenes, pe biti
// http://infoarena.ro/problema/ciur
#include <cstdio>
//#define HOME // TODO: sterge inainte de a trimite
const int NMAX = 268435456;
char Sieve[NMAX];
int n;
int main() {
freopen("ciur.in", "r", stdin);
#ifndef HOME
freopen("ciur.out", "w", stdout);
#endif
scanf("%d", &n);
int i, j, ans;
for (i = 2; i <= n; ++ i) {
if (Sieve[i / 8] & (1 << (i % 8)))
continue;
for (j = 2 * i; j <= n; j += i)
Sieve[j / 8] |= (1 << (j % 8));
}
for (i = 2, ans = 0; i <= n; ++ i)
if ( !(Sieve[i / 8] & (1 << (i %8))) )
++ ans;
printf("%d\n", ans);
return 0;
}