Computational number theory. Pure Python. Zero dependencies. Unreasonably fast.
Installation
pip install numthy
Or just drop numthy.py into your project.
Quick Start
import numthy as nt
# Primality
nt.is_prime(2**89 - 1) # True
# Factorization (SIQS handles 50+ digits)
nt.prime_factors(2**128 + 1) # (59649589127497217, 5704689200685129054721)
# Prime counting
nt.count_primes(10**9) # 50847534
# Discrete log
nt.discrete_log(1000, 3, 65537) # 50921 (i.e., 1000 ≡ 3^50921 mod 65537)
# Diophantine equations
# Solve 2x² + 3xy - 3y² + 7x - 10y - 24 = 0
solutions = nt.conic(2, 3, -3, 7, -10, -24)
next(solutions) # (8, 10)
next(solutions) # (376, -174)
next(solutions) # (17304, 25218)
Demo
Try NumThy in the browser: ini.github.io/numthy/demo
Documentation
See API.md for the full reference.
Under The Hood
One file, with everything implemented from scratch. Simple API, with heavy-duty algorithms under the hood:
- Extra-strong variant of the Baillie-PSW primality test
- Lagarias-Miller-Odlyzko (LMO) algorithm for prime counting, generalized to sums over primes of any arbitrary completely multiplicative function
- Two-stage Lenstra's ECM factorization with Montgomery curves and Suyama parametrization
- Self-initializing quadratic sieve (SIQS) with triple-large-prime variation
- Cantor-Zassenhaus → Hensel lifting → Chinese Remainder Theorem pipeline for finding modular roots of polynomials
- Adleman-Manders-Miller algorithm for general n-th roots over finite fields
- General solver for all binary quadratic Diophantine equations (ax² + bxy + cy² + dx + ey + f = 0)
- Lenstra–Lenstra–Lovász lattice basis reduction algorithm with automatic precision escalation
- Jochemsz-May generalization of Coppersmith's method for multivariate polynomials with any number of variables
Requirements
Python 3.10+
That's it.
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
numthy-0.2.1.tar.gz
(109.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
numthy-0.2.1-py3-none-any.whl
(66.5 kB
view details)
File details
Details for the file numthy-0.2.1.tar.gz.
File metadata
- Download URL: numthy-0.2.1.tar.gz
- Upload date:
- Size: 109.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2b4923c921f08c3ba22089e7b428d7370557acdbbb361e0e9fcb7df554bb74e
|
|
| MD5 |
597bb124a7b3e439442bdf5514ddac94
|
|
| BLAKE2b-256 |
9a88cea069fdc7ec2afc52bb4a122288436a012161f9f6a1aa3e63f661b2ff1c
|
File details
Details for the file numthy-0.2.1-py3-none-any.whl.
File metadata
- Download URL: numthy-0.2.1-py3-none-any.whl
- Upload date:
- Size: 66.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
025da604b8e68ac7e118d7d36e45a1d8d515f1c9f3d929e44b04c815dddae1db
|
|
| MD5 |
5acb9e181f4aa8769a42e102c6ce7668
|
|
| BLAKE2b-256 |
79f0eaf079a3b5535b309822cae61cb36ef3461c55ee84472457b9f174ffe033
|