Projects/1BIT/summer-semester/IJC-1/eratosthenes.c
2026-04-14 19:28:46 +02:00

21 lines
601 B
C

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