Expand description
This crate provides utilities for prime related functionalities and some basic number theoretic functions:
- Primality testing
- Primes generation and indexing
- Integer factorization
- Number theoretic functions
- Prime Pi function, its estimation, and its bounds
- Nth Prime, its estimation, and its bounds
- Moebius function
§Usage
Most number theoretic functions can be found in nt_funcs module, while some of them are implemented as member function of num_modular::ModularOps or PrimalityUtils.
Example code for primality testing and integer factorization:
use num_prime::{PrimalityTestConfig, FactorizationConfig};
use num_prime::nt_funcs::{is_prime, factorize, factors};
let p = 2u128.pow(89) - 1; // a prime number
assert!(is_prime(&p, None).probably()); // use default primality check config
assert!(is_prime(&p, Some(PrimalityTestConfig::bpsw())).probably()); // BPSW test
let c = 2u128.pow(83) - 1; // a composite number
assert!(!is_prime(&c, None).probably());
let fac = factorize(c); // infallible factorization with default configuration
assert_eq!(fac.len(), 2); // 2^83-1 = 167 * 57912614113275649087721
let config = FactorizationConfig::strict();
let (fac, rem) = factors(c, Some(config)); // fallible factorization with customized configuration
assert!(fac.len() == 2 && rem.is_none());
§Backends
This crate is built with modular integer type and prime generation backends.
Most functions support generic input types, and support for num-bigint
is
also available (it’s an optional feature). To make a new integer type supported
by this crate, the type has to implement detail::PrimalityBase and detail::PrimalityRefBase.
For prime generation, there’s a builtin implementation (see buffer module),
but you can also use other backends (such as primal
) as long as it implements PrimeBuffer.
§Optional Features
big-int
(default): Enable this feature to supportnum-bigint::BigUint
as integer inputs.big-table
(default): Enable this feature to allow compiling large precomputed tables which could improve the speed of various functions with the cost of larger memory footprint.
Modules§
- buffer
- Implementations and extensions for PrimeBuffer, which represents a container of primes
- detail
- Implementation details for this crate.
- factor
- Implementations for various factorization algorithms.
- nt_
funcs - Standalone number theoretic functions
Structs§
- Factorization
Config - Represents a configuration for integer factorization
- Primality
Test Config - Represents a configuration for a primality test
Enums§
- Primality
- This enum describes the result of primality checks
Traits§
- BitTest
- This trait support unified bit testing for (unsigned) integers
- Exact
Roots - Extension on num_integer::Roots to support perfect power check on integers
- Primality
Utils - This trait implements various primality testing algorithms
- Prime
Buffer - This trait represents a general data structure that stores primes.
- Rand
Prime - Supports random generation of primes