Structural analysis for integers — classify, scan, compare, and track number structure using a shared label language
Project description
On the Distribution of Smaller Factors in Semiprimes
Jonathan Kendall, 2026
An empirical study of the coordinate θ = log p / log n for semiprimes n = pq (p ≤ q). Exact enumeration up to N ≤ 10⁸ shows that the proportion P(N, θ₀) of semiprimes with θ ≤ θ₀ increases monotonically with N, consistent with O(1/log log N) decay toward a limiting value — the classical rate for related semiprime counts (Montgomery–Vaughan §7.4). A novel discrete activation phenomenon is documented: each prime p contributes a visible step in P(N, θ₀) when N crosses p^(1/θ₀). A refined heuristic prefactor f(θ₀) = log(1/θ₀) − θ₀ − log 2 + ½ reduces the maximum relative prediction error for δ · log log N from 4.3× (naive Mertens) to under 1.21× across θ₀ ∈ [0.10, 0.45]. Several geometric and spectral embeddings (additive phase wrapping, multiplicative phase maps, spectral fingerprint, factor-ratio spectrum) all fail to recover the structure carried by θ, consistent with a separation principle: factor asymmetry is not recoverable from any function of n alone that is multiplicative or additive in log-space.
Paper
"On the Distribution of Smaller Factors in Semiprimes: Discrete Activation Thresholds, Slow Convergence, and a Refined Heuristic" — Jonathan Kendall, 2026
📄 Read the paper (PDF) | [Submitted to Integers: Electronic Journal of Combinatorial Number Theory]
To reproduce all paper results exactly:
python3 scripts/verify_semiprime_tables.py
The PrimeHelix toolkit (CLI, visualizations, structure-scan) is a separate research tool built alongside the paper.
Requirements
- Python 3.8+, numpy, scipy, matplotlib
- ~400 MB RAM for SPF sieve to N = 1e8
- Runtime: ~8 minutes
Reproduce all results
python3 scripts/verify_semiprime_tables.py
scripts/verify_semiprime_tables.py is the canonical script (commit fc43ef0).
scripts/verify_paper_tables.py is an earlier version kept for reference only.
Outputs
- results/table1.csv, table2.csv, table3.csv
- activation_theta_0_10.png
- stabilisation.png
Verified checksums (exact, no sampling)
- 210,035 semiprimes ≤ 1e6
- 1,904,324 semiprimes ≤ 1e7
- 17,427,258 semiprimes ≤ 1e8
Repository structure
paper/ — paper.tex, cover_letter.tex, paper.pdf (canonical)
paper/drafts/ — earlier draft versions
scripts/ — all Python and shell scripts
figures/ — all generated plots
datasets/ — raw data CSVs and JSON
results/ — CSV outputs from verification script
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file primehelix-1.0.0.tar.gz.
File metadata
- Download URL: primehelix-1.0.0.tar.gz
- Upload date:
- Size: 40.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc79d19b3d9080b5a690c46a3de5d0bb41e2391366165359fa84f89a92036f34
|
|
| MD5 |
6e32f0363027526b36b501022c108dbd
|
|
| BLAKE2b-256 |
f79db98b49463253b41d659b9c62ad1d8164ca17a43128bbbf3584fcded2097c
|
Provenance
The following attestation bundles were made for primehelix-1.0.0.tar.gz:
Publisher:
publish.yml on onojk/primehelix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
primehelix-1.0.0.tar.gz -
Subject digest:
bc79d19b3d9080b5a690c46a3de5d0bb41e2391366165359fa84f89a92036f34 - Sigstore transparency entry: 1385498929
- Sigstore integration time:
-
Permalink:
onojk/primehelix@f3a98214983b7e4aad1a93da96b4380f433001a6 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/onojk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f3a98214983b7e4aad1a93da96b4380f433001a6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file primehelix-1.0.0-py3-none-any.whl.
File metadata
- Download URL: primehelix-1.0.0-py3-none-any.whl
- Upload date:
- Size: 38.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35f50dd912b2e2b2b4e88a07a79c9facd1a536f9a2497ee97dab4449a3c915dc
|
|
| MD5 |
e755fb1584a6d131938ce8a75b90968f
|
|
| BLAKE2b-256 |
62ae4fec0b2de843b3196158a87b9c49fb30bc172d45703c287654d91793c49b
|
Provenance
The following attestation bundles were made for primehelix-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on onojk/primehelix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
primehelix-1.0.0-py3-none-any.whl -
Subject digest:
35f50dd912b2e2b2b4e88a07a79c9facd1a536f9a2497ee97dab4449a3c915dc - Sigstore transparency entry: 1385498935
- Sigstore integration time:
-
Permalink:
onojk/primehelix@f3a98214983b7e4aad1a93da96b4380f433001a6 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/onojk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f3a98214983b7e4aad1a93da96b4380f433001a6 -
Trigger Event:
push
-
Statement type: