py3nt.core package¶
Submodules¶
py3nt.core.base module¶
Base classes
- class py3nt.core.base.BaseFactorization[source]¶
Bases:
ABCAbstract base class for factorization.
- factorize:
Factorize a positive integer.
- abstract factorize(n) dict[int, int][source]¶
Factorize positive integers not exceeding 10^70.
- Parameters:
n (
int) – Positive integer to be factorized.- Returns:
Dictionary of canonical prime factorization. Keys correspond to prime factors and values correspond to their multiplicity.
- Return type:
dict
- class py3nt.core.base.BaseSieve(limit: int, num_primes: int = 0)[source]¶
Bases:
ABCAbstract base class for sieve.
- generate_primes:
Generate primes when size is small.
- limit: int¶
- num_primes: int = 0¶
- primes_: ndarray¶
- class py3nt.core.base.BaseSieveFactorization(sieve: BaseSieve, largest_small_number: int = 100000000000000)[source]¶
Bases:
BaseFactorizationBase Factorization class with sieve.
- regenerate_primes:
Generate primes if necessary.
- largest_small_number: int = 100000000000000¶
py3nt.core.factorize module¶
Factorize integers
- class py3nt.core.factorize.BigIntFactorization[source]¶
Bases:
BaseFactorizationFactorize large positive integers not exceeding a default biggest number.
- factorize:
Factorize a positive integer using Pollard’s rho algorithm.
- class py3nt.core.factorize.FactorizationFactory(N: int, with_sieve: bool = True)[source]¶
Bases:
objectFactorize positive integers not exceeding the default biggest number.
- factorize:
Factorize a positive integer.
- Raises:
ValueError – If n is negative or exceeds the default biggest number.
- N: int¶
- factorize(n: int) dict[int, int][source]¶
Factorize positive integers.
- Parameters:
n (
int) – A positive integer.- Returns:
Key value pairs of prime factorization. Keys are prime factors. Values are multiplicities of corresponding prime factors.
- Return type:
dict[int, int]
- Raises:
ValueError – If \(n\) is not positive.
- factorizer: BaseFactorization¶
- with_sieve: bool = True¶
- class py3nt.core.factorize.LognSieveFactorization(sieve: BaseSieve, largest_small_number: int = 100000000000000)[source]¶
Bases:
BaseSieveFactorizationFactorize small numbers in logn complexity.
- factorize:
Factorize a positive integer using pre-stored prime factors.
- class py3nt.core.factorize.NaiveSqrtFactorization[source]¶
Bases:
BaseFactorizationFactorize small numbers in sqrt(n) complexity.
- factorize:
Factorize a positive integer using naive sqrt method.
- class py3nt.core.factorize.SieveSqrtFactorization(sieve: BaseSieve, largest_small_number: int = 100000000000000)[source]¶
Bases:
BaseSieveFactorizationFactorization using naive sieve and primes not exceeding \(\sqrt{n}\).
- factorize:
Factorize a positive integer using sieve generated primes not exceeding \(\sqrt{n}\).
py3nt.core.primality_test module¶
Define primality tests
- py3nt.core.primality_test.is_prime(n: int) bool[source]¶
Check if a positive integer is prime.
- Parameters:
n (
int) – A positive integer.- Returns:
If True, then \(n\) is a prime (probable if \(n\) is large). Otherwise composite.
- Return type:
bool
- py3nt.core.primality_test.is_prime_naive(n: int) bool[source]¶
Test numbers not exceeding \(\sqrt{n}\) for primality.
- Parameters:
n (
int) – A positive integer for primality testing.- Returns:
Trueif \(n\) is prime,Falseotherwise.- Return type:
bool- Raises:
ValueError – If \(n\) is not positive.
py3nt.core.sieve module¶
Generate primes using sieve
- class py3nt.core.sieve.SieveOfEratosthenes(limit: int, num_primes: int = 0)[source]¶
Bases:
BaseSieveSieve of Eratosthenes for generating primes. Usually used for factorizing by division of primes not exceeding \(\sqrt{n}\). So, in most cases
limitshould be set to \(\ceil{\sqrt{n}}\).- generate_primes:
Generate primes up to
limitusing sieve of Eratosthenes.
- class py3nt.core.sieve.SieveOfEratosthenesOptimized(limit: int, num_primes: int = 0)[source]¶
Bases:
BaseSieveWe can store smallest prime factors for \(\log{n}\) factorization. Therefore, \(n\) must be in sieve range.
- generate_primes:
Generate primes using pre-stored prime factors of positive integers.
- largest_prime_factors_: ndarray¶