// bitset.h // Řešení IJC-DU1, příklad a), 22.3.2024 // Autor: Roman Nečas, FIT // Přeloženo: gcc 13.2.1 #include "primes.h" void Eratosthenes(bitset_t pole) { bitset_index_t size = bitset_size(pole); bitset_fill(pole, true); // Assume all numbers are prime initially bitset_setbit(pole, 0, false); // 0 is not prime bitset_setbit(pole, 1, false); // 1 is not prime for (bitset_index_t i = 2; i * i < size; i++) { if (bitset_getbit(pole, i)) { for (bitset_index_t j = i * i; j < size; j += i) { bitset_setbit(pole, j, false); // Mark multiples of i as not prime } } } }