Factorial Engine
A high-performance, zero-error Rust crate for computing the prime factorization of factorials (n!).
This engine is designed as a robust, backend computational tool. It uses Legendre's Formula to calculate prime exponents directly, completely avoiding the need to compute or store the immense values of n! itself. This ensures exceptional performance and prevents any possibility of integer overflow, even for very large n.
For fixed-width integer inputs, the crate also includes a deterministic primality check built directly from the symbolic factorization of n!. In the u64 range, the identity
n is prime if and only if n! mod n^2 != 0
can be evaluated symbolically, with the small edge cases handled explicitly. This makes it a fast, reliable symbolic-factorial test for practical fixed-width use cases.
Features
- High Performance: Employs Legendre's Formula for direct calculation of prime exponents.
- Zero Error: Avoids large number arithmetic entirely, making it robust and free from overflow errors.
- Efficient Prime Generation: Includes an optimized Sieve of Eratosthenes for on-demand prime generation and caching.
- Symbolic Factorials: [
SymbolicFactorial] representsn!as a displayable prime factorization (e.g.2^47 × 3^22 × 5^12 × ...). - Symbolic Arithmetic:
multiply,checked_divide, andpowcombine symbolic factorials (e.g. for binomial coefficients) without ever computing the underlying integers. - Deterministic Primality Testing:
FactorialEngine::is_prime_factorialchecks primality using the symbolic representation ofn!foru64-sized inputs. - BigUint Support:
to_biguint,FactorialEngine::factorial_biguint, andFactorialEngine::binomialmaterialize exact, arbitrary-precision results vianum-bigintonly when you actually need the number. - Reverse Factorial: [
reverse_factorial] recoversnfrom a candidate factorial value, e.g.reverse_factorial(120) == Ok(5). - Clean API: Provides a simple and clear interface for getting the full symbolic factorization of
n!.
Usage
Add this crate to your Cargo.toml:
[]
= "0.4" # Or the latest version
Example
use ;
Deterministic primality testing with symbolic factorials
This crate can also test whether a number is prime using the symbolic factorization of n!.
use FactorialEngine;
This is a specialized, deterministic primality check for u64-sized inputs, using the fact that n! mod n^2 != 0 for primes n > 4, with the small edge cases handled explicitly. For larger values, use the symbolic divisibility primitives directly rather than treating this as a general arbitrary-precision primality API.
Purpose
This crate serves as a foundational block for applications in number theory, combinatorics, and computational mathematics. It is designed to be a reliable, "black-box" dependency that provides factorial factorization data with maximum efficiency and correctness.
Author
Neil Crago
Related Crates
This crate is part of a collection of crates by the same author: These include:-
- MOMA
- MOMA_simulation_engine
- Fractal_Algebra
- tma_engine
- fa_slow_ai