Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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;
}