Source code for py3nt.defaults
"""Some default values"""
import numpy as np
LOGN_PRIME_FACTOR_FIELD = "largest_prime_factors_"
[docs]
class Defaults:
"""
Set default values
Methods
-------
get_largest_small_number:
Get the current default largest small number for sieve sqrt factorization.
set_largest_small_number:
Set the largest small number to ``new_largest_small_number``.
get_biggest_number:
Get the current default biggest number you can factorize.
set_biggest_number:
Set the biggest number to ``new_biggest_number``
get_max_logn_factorization_limit:
Get the current default maximum logn factorization limit.
get_default_sieve_limit:
Get the current default sieve limit.
"""
_LARGEST_SMALL_NUMBER = 0
_BIGGEST_NUMBER = 0
_MAX_LOGN_FACTORIZATION_LIMIT = 0
_DEFAULT_SIEVE_LIMIT = 0
def __init__(self) -> None:
self.reset()
[docs]
def get_largest_small_number(self) -> int:
"""Get the current default largest small number for sieve sqrt factorization."""
return self._LARGEST_SMALL_NUMBER
[docs]
def set_largest_small_number(self, new_largest_small_number: int) -> None:
"""Set the largest small number to ``new_largest_small_number``"""
if np.less_equal(new_largest_small_number, self._MAX_LOGN_FACTORIZATION_LIMIT):
raise ValueError(
f"""{new_largest_small_number} must be greater than
logn factorization limit: {self._MAX_LOGN_FACTORIZATION_LIMIT}"""
)
self._LARGEST_SMALL_NUMBER = new_largest_small_number
[docs]
def get_biggest_number(self) -> int:
"""Get the current default biggest number you can factorize."""
return self._BIGGEST_NUMBER
[docs]
def set_biggest_number(self, new_biggest_number) -> None:
"""Set the biggest number to ``new_biggest_number``"""
if np.less_equal(new_biggest_number, self._LARGEST_SMALL_NUMBER):
raise ValueError(
f"""{new_biggest_number} must be greater than
largest small number: {self._LARGEST_SMALL_NUMBER}"""
)
self._BIGGEST_NUMBER = new_biggest_number
[docs]
def get_max_logn_factorization_limit(self) -> int:
"""Get the current default maximum logn factorization limit."""
return self._MAX_LOGN_FACTORIZATION_LIMIT
[docs]
def get_default_sieve_limit(self) -> int:
"""Get the current default sieve limit."""
return self._DEFAULT_SIEVE_LIMIT
[docs]
def reset(self) -> None:
"""Reset default values"""
self._LARGEST_SMALL_NUMBER = int(1e14)
self._BIGGEST_NUMBER = int(1e70)
self._MAX_LOGN_FACTORIZATION_LIMIT = int(1e7)
self._DEFAULT_SIEVE_LIMIT = int(1e7)
defaults = Defaults()
LARGEST_SMALL_NUMBER = defaults.get_largest_small_number()
BIGGEST_NUMBER = defaults.get_biggest_number()
MAX_LOGN_FACTORIZATION_LIMIT = defaults.get_max_logn_factorization_limit()
DEFAULT_SIEVE_LIMIT = defaults.get_default_sieve_limit()
MULTIPLICATION_ATTRIBUTE = "__mul__"
CLASS_ATTRIBUTE = "__class__"