Primary module interface unit for module prime_generation.
More...
#include <cstddef>
#include <vector>
import prime_test;
import prime_generation:sieve_235;
import base;
|
| template<Integer T, typename SieveType, std::size_t SEGMENT_SIZE, bool CREATE_LIST> |
| SieveType | ntlib::eratosthenes_segmented (T N, std::vector< T > &primes) |
| | Generates a prime sieve.
|
| template<Integer T, typename SieveType = ntlib::sieve_235<>, std::size_t SEGMENT_SIZE = (1 << 18)> |
| SieveType | ntlib::prime_sieve (T N) |
| | Generates a prime sieve.
|
| template<Integer T, typename SieveType = ntlib::sieve_235<>, std::size_t SEGMENT_SIZE = (1 << 18)> |
| SieveType | ntlib::prime_sieve (T N, std::vector< T > &primes) |
| | Generates a prime sieve.
|
| template<Integer T> |
| constexpr T | ntlib::next_prime (T n) noexcept |
| | Find the smallest prime bigger than a given number.
|
Primary module interface unit for module prime_generation.
◆ eratosthenes_segmented()
template<Integer T, typename SieveType, std::size_t SEGMENT_SIZE, bool CREATE_LIST>
| SieveType ntlib::eratosthenes_segmented |
( |
T | N, |
|
|
std::vector< T > & | primes ) |
|
export |
Generates a prime sieve.
- Template Parameters
-
| T | An integer-like type. |
| SieveType | The datastructure to use as a prime sieve. |
| SEGMENT_SIZE | Portion of the sieve to be processed at once. This should be small enough that SEGMENT_SIZE sieve fields fit into an L3 cache line. |
| CREATE_LIST | Whether the sieve should also create a list of primes. |
- Parameters
-
| N | The largest number to be accessable in the sieve. |
| [out] | primes | The std::vector<T> to receive the primes. |
- Returns
- The sieve.
◆ next_prime()
template<Integer T>
| T ntlib::next_prime |
( |
T | n | ) |
|
|
nodiscardconstexprexportnoexcept |
Find the smallest prime bigger than a given number.
- Template Parameters
-
- Parameters
-
- Returns
- The smallest prime larger than \(n\).
◆ prime_sieve() [1/2]
template<Integer T, typename SieveType = ntlib::sieve_235<>, std::size_t SEGMENT_SIZE = (1 << 18)>
| SieveType ntlib::prime_sieve |
( |
T | N | ) |
|
|
export |
Generates a prime sieve.
- Template Parameters
-
| T | An integer-like type. |
| SieveType | The datastructure to use as a prime sieve. |
| SEGMENT_SIZE | Portion of the sieve to be processed at once. This should be small enough that SEGMENT_SIZE sieve fields fit into an L3 cache line. |
- Parameters
-
| N | The largest number to be accessable in the sieve. |
- Returns
- The sieve.
◆ prime_sieve() [2/2]
template<Integer T, typename SieveType = ntlib::sieve_235<>, std::size_t SEGMENT_SIZE = (1 << 18)>
| SieveType ntlib::prime_sieve |
( |
T | N, |
|
|
std::vector< T > & | primes ) |
|
export |
Generates a prime sieve.
- Template Parameters
-
| T | An integer-like type. |
| SieveType | The datastructure to use as a prime sieve. |
| SEGMENT_SIZE | Portion of the sieve to be processed at once. This should be small enough that SEGMENT_SIZE sieve fields fit into an L3 cache line. |
- Parameters
-
| N | The largest number to be accessable in the sieve. |
| primes | The std::vector<T> to receive the primes. |
- Returns
- The sieve.