Tools for generating filters and collections with primes concurrently.
Rust implementation of the Sieve of Atkin.
This implementation runs in O( sqrt(maxnum) + sectionsize ) (where sectionsize = maxnum - min_num)
This implementation built to work well with parallel processing, distributed computing tasks, or if a reasonably large section of primes is desired within a range that is roughly quadratic to the size of the section. (e.g., If you need primes in a block of size 10^9 starting at 10^18.)
There is no need to calculate smaller primes or to have any communication between threads, as each section of primes is calculated completely independently.
concurrent_prime_sieve::filter
Rust
fn prime_filter(max_num: usize) -> Vec<bool>
Generates a vector of bools of size max_num, with
true
at each prime index, andfalse
otherwise.The number of threads is based on the number of virtual cores detected.
Rust
fn prime_filter_concurrently(max_num: usize, threads: usize) -> Vec<bool>
Similar to
fn prime_filter
, but allows for a custom number of threads.
Rust
fn prime_filter_sequentially(max_num: usize) -> Vec<bool>
Similar to
fn prime_filter
, but does not spawn any new threads. (Note: This function has not been optimized. May eventually borrow an outside resource.)
Rust
fn prime_filter_section(min_num:usize, max_num: usize) -> Vec<bool>
Similar to
fn prime_filter
, but just for numbers between min and max, returned in a vector of length max-min.
Rust
fn prime_filter_section_concurrently(min_num: usize, max_num: usize, threads: usize) -> Vec<bool>
Similar to
fn prime_filter_section
, but allows for a custom number of threads.
Rust
fn prime_filter_section_sequentially(min_num: usize, max_num: usize) -> Vec<bool>
Similar to
fn prime_filter_section
, but does not spawn any new threads.
concurrent_prime_sieve::collection
Rust
fn primes(max_num: usize) -> Vec<usize>
Generates a vector collection of primes strictly less than max_num.
The number of threads is based on the number of virtual cores detected.
Rust
fn primes_concurrently(max_num:usize, threads:usize) -> Vec<usize>
Similar to
fn primes
, but allows for a custom number of threads.
Rust
fn primes_sequentially(max_num: usize) -> Vec<usize>
Similar to
fn primes
, but does not spawn any new threads. (Note: This function has not been optimized. May eventually borrow an outside resource.)
Rust
fn primes_section(min_num: usize, max_num: usize) -> Vec<usize>
Generates a vector collection of primes between minnum and maxnum.
The number of threads is based on the number of virtual cores detected.
Rust
fn primes_section_concurrently(min_num:usize, max_num:usize, threads:usize) -> Vec<usize>
Similar to
fn primes_section
, but allows for a custom number of threads.
Rust
fn primes_section_sequentially(min_num:usize, max_num:usize, threads:usize) -> Vec<usize>
Similar to
fn primes_section
, but does not spawn any new threads.