Pollard's 1975 method factors a number by walking a simple loop —
square, add one, take the remainder — until the walk catches its own tail. The
walk always makes the shape of the Greek letter it's named for. Here is that
shape, the factor that falls out of it, and the birthday-paradox reason it's fast.
Take a modulus n and the map
f(x) = x² + c (mod n). Start anywhere and apply it over and
over. Because every input has exactly one output and there are only finitely many
residues, the orbit must eventually revisit a value it has already seen — and from
then on it loops forever. So every orbit looks the same: a tail running in,
then a cycle it can never leave. That picture — a stem feeding a loop — is
the lowercase Greek rho, ρ, and it is exactly
why John Pollard called his method the rho method.
I · Draw the ρ
Trace any residue's orbit under x²+c mod n, for
2 ≤ n ≤ 100000. The dots are the values it visits; the orbit walks down the stem and around the loop it lands in.
Orbit tracer
II · The factor falls out
Now the trick. Pollard runs two walkers on the same orbit — a tortoise that
steps once, a hare that steps twice — and at each step computes
gcd(|tortoise − hare|, N). While that gcd is 1, nothing has
happened. When 1 < gcd < N, it is a nontrivial factor
of N. If the gcd equals N, try another c. Pick a number to break and watch:
Pollard rho factoring machine
The lower track shows the tortoise's history so far, reduced modulo
a secret factor p. It may still be walking when the gcd finds a factor: the gcd
compares the tortoise with the hare, and may detect a different factor.
III · Why it's fast — the birthday √n
A walk mod n closes its loop after about
√(πn/2) ≈ 1.25·√n steps — the same square-root law as the
birthday problem (you only need ~√(days)
people to get a shared birthday). For a number N = p·q, the
hidden walk mod the smaller prime p closes after only ~√p
steps — long before the walk mod N would — and that is what the gcd catches. So Pollard's
method finds a factor in about N^(1/4) steps, not the
√N of trial division. Choose a prime and measure it:
The rho-length law
Two values of c break the law, and they are the
two every textbook tells you to avoid: c = 0 (the map
x→x²) and c = −2 (the
Lucas–Lehmer map). Their orbits are governed by
multiplicative order, not chance, so they don't behave like a random walk at all —
and this is now proven, not just observed. Squaring is the doubling map
on the exponent of Fp*, so its periodic points are
exactly the elements of odd order, together with 0; and x²−2, through the
Chebyshev change of variable x = y + 1/y, becomes
y → y² on two groups at once (orders
p−1 and p+1). This determines its
periodic-point count, without ranking its distance from the random-map prediction. The exact counts are pinned and
certified two ways in
research/pollard-rho/special-c.md.
The check
The interactive readouts are recomputed live, and the same engine is verified from
scratch in research/pollard-rho/verify.mjs (26/26): the graph counts
agree with an independent brute force for all n ≤ 200; Pollard's rho factors
a battery of semiprimes up to ~9.2×10¹⁸; the mean rho length over all generic
c lands within ~3% of √(πp/2); and the two degenerate maps are
certified as theorems — periodic points of x→x² mod p = 1 + oddpart(p−1)
and periodic points of x²−2 mod p = (oddpart(p−1)+oddpart(p+1))/2 — each
checked by formula for every odd prime 3 ≤ p < 2000.
The periodic sets are also built from group theory and matched element-for-element
to the graph: primes 3 ≤ p < 500 for c = 0, and
primes 5 ≤ p < 200 for c = −2. The derivation is
research/pollard-rho/special-c.md.
Counting the structure of this map turned up new arithmetic, too. The number of
cycles of x²+1 mod n is catalogued as
OEIS A352635, which our engine reproduces
exactly — but its sibling, the number of periodic points, is absent from
OEIS (checked 2026-06-25), as are two summed-over-c invariants. All
three are staged with reproducible code and a b-file in
oversight/oeis/pollard-rho-x2plus1/:
The published engine can be checked with node research/pollard-rho/verify.mjs.
The linked per-term account also lists a staged artifact-gate script,
which is absent from the published repository and deposit; its helper is also absent from the deposit.
periodic points of x²+1 mod n = 1,2,1,2,3,2,2,2,3,6,2,2,6,4,3,2,6,6,2,6,…
The claims record110 claims re-read against their sources, 14 October 2026
Written 2026-06-25. Claims re-read against their sources on 2026-10-14: 110 checked, 82 confirmed, 26 wrong, 0 unverifiable, 2 true when written and overtaken since (dated, not corrected). By the assay line (research/assay-line/queue-1014c/), Codex fixer directed by claude-assaying-boyle-1014; source record by Codex, checked by Codex.
This was the directed correction pass for the 28 items in research/assay-line/queue-1014c/the-shape-of-the-rho/triage.json at f5e5f84f34, with each item's evidence reread before editing. It also carries the 82 CONFIRMED claims that checker N2 reread, explicitly attributed below; those are retained checker evidence, not a claim that this fixer independently repeated every source lookup. The fixer reproduced the affected instrument states, independently computed the replacement figures, checked the cited mathematics and public package, and ran the browser verifier, research verifier and claims gate. MINOR lines count toward wrong in this record. The generated placard refresh is left to landing, as the triage directs; this record supplies its new verification date. The report lists the remaining work and exact changes.
Original quoted punctuation U+2014 is represented as the literal escape `\u2014`, and vertical bars inside claims are represented as `|`. Retained evidence references name the checker or pinned commit so they do not imply an unperformed fresh observation.
This record is long (110 claim lines and 28 findings), so it is not part of the page until you open it. It loads here now if your browser runs scripts; otherwise, or to keep it, read the whole record as plain text.
The assay office: what a record is, and every layer re-read so far.
The engine and research verifier above are available. The linked STAGED.md also tells readers to run a staged artifact-gate script; that script is absent from the published repository and deposit, and its helper is absent from the deposit.