The structure

The mod 60 wheel, shifted by 10

The foundation of GC-60 is a fixed repeating structure: the integers mod 60, shifted by 10. Within each block of 60 numbers, exactly 16 positions can possibly be prime (all others are divisible by 2, 3, or 5 by construction). These 16 offsets form the passive receiver — the binary that simply waits to receive projections.

// mod 60 + 10 — the 16 candidate offsets, repeated every 60 numbers
n·60+10 { 1, 3, 7, 9, 13, 19, 21, 27, 31, 33, 37, 39, 43, 49, 51, 57 }

Primes 2, 3, and 5 are excluded from the module by definition. The first useful prime is 7, whose first relevant multiple is 7×7 = 49. To locate 49 in the structure: (49 − 10) mod 60 = 39 → offset 39, list 0.

// locating 7×7 = 49
(49 − 10) mod 60 = 39 → offset 39, list 0
0 × 60 + 10 + 39 = 49

// locating 7×11 = 77
(77 − 10) mod 60 = 7 → offset 7, list 1
1 × 60 + 10 + 7 = 77
The projection

The prime cycle — a mask over the structure

Every prime generates a cyclic pattern of offsets as its multiples land on the mod 60 structure. For prime 7, the full cycle across seven consecutive lists is:

// cycle of prime 7 on the mod 60 + 10 structure
0[39]
1[7, 21, 49]
2[3, 31]
3[13, 27]
4[9, 37, 51]
5[19, 33]
6[1, 43, 57]

This cycle is computed once. From that point on, there is no need to calculate 7×7, 7×11, 7×13, 7×17… individually. The cycle is a mask that tells exactly which offset in each list is hit by a multiple of 7.

// the key insight

The divisor does not scan. It projects. Given its cycle, it stamps its footprint onto the fixed structure by simple monotonic translation — sliding the same repeating pattern forward along the lists, indefinitely.

The double cycle

Translation along the number line

To reach any height on the number line, the prime's cycle is simply shifted forward by the prime itself. For prime 7, shifting the cycle by 7 lists gives:

// original cycle of prime 7 (lists 0–6)
0[39]
1[7, 21, 49]
...
// same cycle shifted by 7 (lists 7–13)
7[39]
8[7, 21, 49]
...
// verification: shifted cycle, list 7 and 8
7 × 60 + 10 + 39 = 469 (multiple of 7)
8 × 60 + 10 + 7  = 497 (multiple of 7)
8 × 60 + 10 + 21 = 511 (multiple of 7)
8 × 60 + 10 + 49 = 539 (multiple of 7)

The result is a double infinite cycle: the mod 60 structure repeats every 60 numbers; the prime's offset cycle repeats with its own period. To reach any target height — 10²¹, 10²⁶, 10²⁷ — all that is needed is to translate the prime's cycle along the mod 60 cycle until the target lists are reached. No precomputed archive. No lookup table. No limit imposed by register width.

Core principle

Passive projection vs active scanning

The distinction that defines GC-60 is not about speed — it is about the direction of the operation.

CLASSICAL SIEVE — active
  • Iterates over candidates
  • For each candidate, computes its multiples and marks them
  • Composites are reached by traversal
  • Cost grows with the range
  • Bounded by register width (64-bit)
GC-60 — passive
  • Structure is fixed and static
  • Each divisor projects its own footprint
  • Composites are stamped, not found
  • Cost scales only with √target
  • Unbounded: works at any height
Architectural evolution

From GC-60 to M30x3

The framework evolved in three steps, each preserving the passive projection principle while increasing efficiency and parallelism.

GC-60
mod 60 + 10

The base structure

16 residue offsets repeating every 60 numbers. A single binary receives the projections of all known divisors. This is the original formulation — complete and deterministic from the first implementation.

M30
mod 30

Compact reformulation

The same geometry restated on modulo 30 — a more compact representation of the same 16 candidate positions, halving the period of the base cycle. Same determinism, smaller footprint per cycle.

M30x3
3 × mod 30

Geometric partitioning

The single binary becomes three: Sieve_0, Sieve_10, and Sieve_20 — each covering a disjoint partition of residue classes mod 30. No candidate is ever checked twice. This is not simply parallelism: it is a partition of the candidate space that eliminates redundancy at the root, delivering approximately 30% faster execution than the single-binary implementation at identical scale.