eulerlib icon indicating copy to clipboard operation
eulerlib copied to clipboard

A library of recreational mathematics and number theory related functions inspired by Project Euler

EulerLib


eulerlib__ is a library of recreational mathematics and number theory related functions inspired by Project Euler_. Available functions include:

  • Prime number generation
  • Divisor functions (sigma functions)
  • Euler's totient function
  • Greatest Common Divisor (GCD) using Euclid's algorithm
  • Least Common Multiple (LCM)
  • Integer square root
  • Fibonacci numbers
  • Pandigital numbers
  • Palindrome numbers
  • Pythagorean triples

Functions from this library can be used to solve recreational mathematics and programming problems such as problems in Project Euler.

Installation

eulerlib__ is avalaible through Python Package Index (PyPI) using pip. ::

pip install --upgrade eulerlib

To uninstall using pip_. ::

pip uninstall eulerlib

Usage

In Python console you can import functions/classes from eulerlib as needed. ::

from eulerlib import primes p10 = primes(10) print(p10) [2, 3, 5, 7]

The Divisors class implements functions related to prime factorization, sigma functions etc. ::

from eulerlib import Divisors mydiv = Divisors(10000) div84 = mydiv.divisors(84) #divisors of 84 print(div84) [1, 2, 3, 4, 6, 7, 12, 14, 21, 28, 42, 84] pf840 = mydiv.prime_factors(840) # prime factors of 840 print(pf840) [(2, 3), (3, 1), (5, 1), (7, 1)]

Example: Solved Project Euler_ problem 3_. ::

from eulerlib import is_square, primes
#get approximate square root of number since
#largest prime factor < sq. root
(is_sq, sqroot) = is_square(600851475143L)
#get a list of primes less than the approx. square root.
test_primes = primes(sqroot + 1L)
#test the primes from the list to find the largest factor
len_p = len(test_primes)
for i in range(1,len_p+1):
    j = 0 - i
    test_fact = test_primes[j]
    if 600851475143L%test_fact == 0:
        break
answer = test_fact #Set the answer

See complete documentation_.

Modules

+----------------+------------------------------------------------------------+ |prime_numbers.py| Functions to generate lists of primes. | +----------------+------------------------------------------------------------+ |numtheory.py | * Euler's divisor functions (sigma funtions) | | | * Euler's totient function (phi function) | | | * Prime factors of a number | | | * Divisors of a number | | | * Greatest Common Divisor (GCD) | | | * Least Common Multiple (LCM) | | | * Digital root and digital sum of a number | +----------------+------------------------------------------------------------+ |fibonacci.py | Functions related to the Fibonacci sequence. | +----------------+------------------------------------------------------------+ |pythagoras.py | Functions related to Pythagorean triples. | +----------------+------------------------------------------------------------+ |etc.py | Miscellaneous functions: | | | | | | * Pandigital numbers | | | * Conversion from decimal to base n (2-36) | | | * Number to lists and vice versa | | | * Palindrome numbers | +----------------+------------------------------------------------------------+

Development

Source code repositories (GitHub, BitBucket) are available. Bug reports_ and suggestions are most welcome.

License

eulerlib is licensed under Apache License 2.0_.

.. _Project Euler: https://projecteuler.net .. _PyPI: https://pypi.python.org/pypi .. _pip: https://pip.pypa.io .. _Apache License 2.0: https://www.apache.org/licenses/LICENSE-2.0.html .. _problem 3: https://projecteuler.net/problem=3 .. _GitHub: https://github.com/transmogrifier/eulerlib .. _BitBucket: https://bitbucket.org/transmogrifier/eulerlib .. _Bug reports: https://github.com/transmogrifier/eulerlib/issues .. documentation: http://pythonhosted.org/eulerlib .. eulerlib1: https://pypi.python.org/pypi/eulerlib __ eulerlib1 __ eulerlib1