Skip to main content

lookprime

lookprime is a high-performance prime number library for Python built around a memory-mapped, odd-only, bitset sieve.

It is designed for: - extremely fast primality tests - fast prime counting and enumeration - repeated queries across processes - large limits with minimal RAM overhead - CLI benchmarking and inspection

The core idea:
👉 build a prime sieve once, store it on disk, then reuse it via mmap with near-zero startup cost.


Features

Core performance

  • Odd-only sieve (½ the memory of full sieve)
  • Bitset representation (1 bit per odd number)
  • Memory-mapped cache (mmap) for zero-copy sharing
  • int.from_bytes(...).bit_count() for fast counting
  • Auto-growing cache when needed
  • Safe for multi-process use (read-only)

Python API

  • isprime(n)
  • isprime_many(iterable)
  • primerange(a, b)
  • randprime(a, b)
  • primepi(n)
  • prime(n) (nth prime, 1-indexed)
  • prevprime(n)
  • nextprime(n)
  • primes(n) (first n primes)
  • primes_up_to(n)
  • factorint(n)
  • cache_info()
  • clear_cache()

CLI

  • lookprime info
  • lookprime build
  • lookprime benchmark
  • lookprime isprime <n>
  • lookprime factor <n>
  • lookprime clear-cache

Installation

pip install lookprime

Python ≥ 3.9 required.


Quick Start (Python)

import lookprime

lookprime.isprime(97)                 # True
lookprime.primepi(1_000_000)          # 78498
lookprime.primes_up_to(50)            # [2, 3, 5, 7, 11, ...]
lookprime.factorint(123456)           # {2: 6, 3: 1, 643: 1}

Bulk checks:

lookprime.isprime_many([2, 3, 4, 5, 10**9 + 7])

How the Cache Works

  • Sieve files are stored in a platform-appropriate cache directory:

    • Linux: ~/.cache/lookprime
    • macOS: ~/Library/Caches/lookprime
    • Windows: %LOCALAPPDATA%\lookprime\Cache
  • Each sieve is stored as:

    lookprime_mask_<limit>.lpm
    
  • Files are memory-mapped (mmap) and shared across processes

  • Rebuilding happens only if needed

To inspect cache state:

lookprime.cache_info()

To delete all cached sieves:

lookprime.clear_cache()

or from CLI:

lookprime clear-cache

CLI Usage

Show system and cache info

lookprime info

Build a sieve explicitly

lookprime build --limit 100000000

Benchmark lookup speed

lookprime benchmark

Options:

lookprime benchmark \
  --limit 100000000 \
  --duration 1.0 \
  --iterations 25 \
  --chunk 65536

Environment override:

export LOOKPRIME_CHUNK=65536
lookprime benchmark

Primality from CLI

lookprime isprime 104729

Factor integers from CLI

lookprime factor 123456

Performance Notes

  • isprime(n) is O(1) after cache load
  • primepi(n) uses bitset population count
  • prime(n) and primes(n) use fast bit scanning
  • Cache memory is shared between processes
  • No Python objects are created per lookup

Threading & Multiprocessing

  • The sieve is read-only
  • Safe to open in multiple processes
  • Each process memory-maps its own view
  • No locks required

License

MIT License.

Release files for lookprime 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lookprime 0.2.3
File Size Uploaded
lookprime-0.2.3.tar.gz 16.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lookprime 0.2.3
File Interpreter ABI Platform
lookprime-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 34.8 kB

Release files / lookprime-0.2.3.tar.gz

Download URL lookprime-0.2.3.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a8800ee1849d1ca00ff7e9295e0ef48adeedf0e71e76e42cf49f6ed1ee550309
BLAKE2b-256 checksum
How to use checksums
643913db3ce2b75b0578d263f802ae5529113ea1833f94f122abec305912a4e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / lookprime-0.2.3-py3-none-any.whl

Download URL lookprime-0.2.3-py3-none-any.whl
Size 18.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
577ba9c949e64b829100aec7733f413695aac1050d3d6b991c88c72b4637bd0d
BLAKE2b-256 checksum
How to use checksums
65dd202c85653cdc87b1b3c6083bd56f648faf174d329a1d117b8b522230c449
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page