21 lines
601 B
C
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
|
|
}
|
|
}
|
|
}
|
|
}
|