// 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
			}
		}
	}
}
