NTLib - Number Theory Library 0.9
Loading...
Searching...
No Matches
prime_generation.cpp File Reference

Primary module interface unit for module prime_generation. More...

#include <cstddef>
#include <vector>
import prime_test;
import prime_generation:sieve_235;
import base;
Include dependency graph for prime_generation.cpp:

Functions

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.

Detailed Description

Primary module interface unit for module prime_generation.

Function Documentation

◆ 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
TAn integer-like type.
SieveTypeThe datastructure to use as a prime sieve.
SEGMENT_SIZEPortion 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_LISTWhether the sieve should also create a list of primes.
Parameters
NThe largest number to be accessable in the sieve.
[out]primesThe 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
TAn integer-like type.
Parameters
nThe given number.
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
TAn integer-like type.
SieveTypeThe datastructure to use as a prime sieve.
SEGMENT_SIZEPortion 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
NThe 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
TAn integer-like type.
SieveTypeThe datastructure to use as a prime sieve.
SEGMENT_SIZEPortion 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
NThe largest number to be accessable in the sieve.
primesThe std::vector<T> to receive the primes.
Returns
The sieve.