int main() { size_t N; scanf ("%zu", &N); void* bitset = create_bitset (N + 1); set_bitset (bitset, 0, 1); set_bitset (bitset, 1, 1); for (size_t i = 2; i*i <= N; ++i) { if (!get_bitset (bitset, i)) { for (size_t j = i*i; j <= N; j += i) { set_bitset (bitset, j, 1); } } } size_t prime_count = 0; for (size_t i = 0; i <= N; ++i) { if (!get_bitset (bitset, i)) { ++prime_count; } } destroy_bitset (bitset); printf ("%zu\n", prime_count); }
int main() { size_t infected, count; scanf ("%zu %zu", &infected, &count); void* bitset = create_bitset (count); for (size_t i = 0; i < infected; ++i) { size_t nr; scanf ("%zu", &nr); size_t delta = nr; for (size_t j = nr; j < count; j += delta++) { set_bitset (bitset, j, 1); } } size_t infected_count = 0; for (size_t i = 0; i < count; ++i) { if (get_bitset (bitset, i)) { ++infected_count; } } destroy_bitset (bitset); printf ("%zu\n", infected_count); }
int main(void) { int x, i, j; scanf("%d", &x); void* bitset = init_bitset(x + 1); for(i = 2; i * i <= x; i++) if(!get_bitset(bitset, i)) for(j = i * i; j <= x; j += i) set_bitset(bitset, j, 1); int count = 0; for(i = 2; i <= x; i++) if(!get_bitset(bitset, i)) count++; printf("%d", count); destroy_bitset(bitset); return 0; }