Wheel factorization is a method for generating a sequence of natural numbers by repeated additions, as determined by a number of the first few primes, so that the generated numbers are coprime with these primes, by construction.

Description

For a chosen number (usually no larger than 4 or 5), the first primes determine the specific way to generate a sequence of natural numbers which are all known in advance to be coprime with these primes; that is, they are all known to not be multiples of any of these primes. This method can thus be used for an improvement of the trial division method for integer factorization, as none of the generated numbers need be tested in trial divisions by those small primes.

The trial division method consists of dividing the number to be factorized by the integers in increasing order (2, 3, 4, 5, ...) successively. A common improvement consists of testing only by primes, i.e. by 2, 3, 5, 7, 11, …. With the wheel factorization, one starts from a small list of numbers, called the basis (usually the first few primes); then, one generates the list, called the wheel, of the integers that are coprime with all the numbers in the basis.

Then, for the numbers generated by "rolling the wheel", one needs to only consider the primes not in the basis as their possible factors. It is as if these generated numbers have already been tested, and found to not be divisible by any of the primes in the basis. It is an optimization because all these operations become redundant, and are spared from being performed at all.

When used in finding primes, or sieving in general, this method reduces the amount of candidate numbers to be considered as possible primes. With the basis {2, 3}, the reduction is to of all the numbers. This means that fully of all the candidate numbers are skipped over automatically. Larger bases reduce this proportion even further; for example, with basis {2, 3, 5} to , and with basis {2, 3, 5, 7} to .

The bigger the wheel, the larger the computational resources involved and the smaller the additional improvements, leading to quickly diminishing returns.

Introduction

Natural numbers from 1 and up are enumerated by repeated addition of 1:

Considered by spans of two numbers each, they are enumerated by repeated additions of 2:

Every second number thus generated will be even. Thus odds are generated by the repeated additions of 2:

Considered by spans of three numbers each, they are enumerated by repeated additions of 23 = 6:

Every second number in these triplets will be a multiple of 3, because numbers of the form 3 + 6k are all odd multiples of 3. Thus all the numbers coprime with the first two primes (2 and 3) will be generated by repeated additions of 6, starting from {1, 5}:

The same sequence can be generated by repeated additions of 235 = 30, turning each five consecutive spans, of two numbers each, into one joined span of ten numbers:

Out of each ten of these 6-coprime numbers, two are multiples of 5, thus the remaining eight will be 30-coprime:

This is naturally generalized.

The above showcases first three wheels:

{1} (containing 1 = 2 − 1 number) with the "circumference" of 2 for generating the sequence of 2-coprimes by repeated addition of 2; {1, 5} (containing 2 = (2 − 1)(3 − 1) numbers) with the "circumference" of 23 = 6, for generating the sequence of 6-coprime numbers by repeated additions of 6; {1, 7, 11, 13, 17, 19, 23, 29} (containing 8 = (2−1)(3−1)(5−1) numbers) with the "circumference" of 235 = 30, for generating the sequence of 30-coprime numbers by repeated additions of 30; etc.

Another representation of these wheels is by turning a wheel's numbers, as seen above, into a circular list of the differences between the consecutive numbers, and then generating the sequence starting from 1 by repeatedly adding these increments one after another to the last generated number, indefinitely. This is the closest it comes to the rolling the wheel metaphor. For instance, this turns {1, 7, 11, 13, 17, 19, 23, 29, 31} into {6, 4, 2, 4, 2, 4, 6, 2}, and then the sequence is generated as n=1; n+6=7; n+4=11; n+2=13; n+4=17; n+2=19; n+4=23; n+6=29; n+2=31; n+6=37; n+4=41; n+2=43; etc.

A typical example

With a given basis of the first 3 prime numbers {2, 3, 5}, the "first turn" of the wheel consists of: .

The second turn is obtained by adding 30, the product of the basis, to the numbers in the first turn. The third turn is obtained by adding 30 to the second turn, and so on.

For implementing the method, one may remark that the increments between two consecutive elements of the wheel, that is

remain the same after each turn.

The suggested implementation that follows uses an auxiliary function , which tests whether is evenly divisible by , and returns true in this case and false otherwise. In this implementation, the number to be factorized is , and the program returns the smallest divisor of returning itself if it is prime. if div(n, 2) = true then return 2 if div(n, 3) = true then return 3 if div(n, 5) = true then return 5 k := 7; i := 0 while k * k ≤ n do if div(n, k) = true, then return k k := k + inc[i] if i < 7 then i := i + 1 else i := 0 return n

For getting the complete factorization of an integer, the computation may be continued without restarting the wheel at the beginning. This leads to the following program for a complete factorization, where the function adds its first argument at the end of the second argument, which must be a list.

factors := [ ] while div(n, 2) = true do factors := add(2, factors) n := n / 2 while div(n, 3) = true do factors := add(3, factors) n := n / 3 while div(n, 5) = true do factors := add(5, factors) n := n / 5 k := 7; i := 0 while k * k ≤ n do if div(n, k) = true then add(k, factors) n := n / k else k := k + inc[i] if i < 7 then i := i + 1 else i := 0 if n > 1 then add(n, factors) return factors

Another presentation

Wheel factorization is used for generating lists of mostly prime numbers from a simple mathematical formula and a much smaller list of the first prime numbers. These lists may then be used in trial division or sieves. Because not all the numbers in these lists are prime, doing so introduces inefficient redundant operations. However, the generators themselves require very little memory compared to keeping a pure list of prime numbers. The small list of initial prime numbers constitute complete parameters for the algorithm to generate the remainder of the list. These generators are referred to as wheels. While each wheel may generate an infinite list of numbers, past a certain point, the numbers cease to be mostly prime.

The method may further be applied recursively as a prime number wheel sieve to generate more accurate wheels. Much definitive work on wheel factorization, sieves using wheel factorization, and wheel sieve, was done by Paul PritchardPritchard, Paul, "Linear prime-number sieves: a family tree," Sci. Comput. Programming 9:1 (1987), pp. 17–35.Paul Pritchard, A sublinear additive sieve for finding prime numbers, Communications of the ACM 24 (1981), 18–23. Paul Pritchard, Explaining the wheel sieve, Acta Informatica 17 (1982), 477–485. Paul Pritchard, Fast compact prime number sieves (among others), Journal of Algorithms 4 (1983), 332–344. in formulating a series of different algorithms. To visualize the use of a factorization wheel, one may start by writing the natural numbers around circles as shown in the adjacent diagram. The number of spokes is chosen such that prime numbers will have a tendency to accumulate in a minority of the spokes.

Sample graphical procedure Find the first few prime numbers to form the basis of the factorization wheel. They are known or perhaps determined from previous applications of smaller factorization wheels or by quickly finding them using the Sieve of Eratosthenes. Multiply the base prime numbers together to give the result , which is the circumference of the factorization wheel. Write the numbers 1 to in a circle. This will be the inner-most circle representing one rotation of the wheel. From the numbers 1 to in the innermost circle, strike off all multiples of the base primes from step one as applied in step 2. This composite number elimination can be accomplished either by use of a sieve such as the Sieve of Eratosthenes or as the result of applications of smaller factorization wheels. Taking to be the number of circles written so far, continue to write to in concentric circles around the inner-most circle, such that is in the same position as . Repeat step 5 until the largest rotation circle spans the largest number to be tested for primality. Strike off the number 1. Strike off the spokes of the prime numbers as found in step 1 and applied in step 2 in all outer circles without striking off the prime numbers in the inner-most circle (in circle 1). Strike off the spokes of all multiples of prime numbers struck from the inner circle 1 in step 4 in the same way as striking off the spokes of the base primes in step 8. The remaining numbers in the wheel are mostly prime numbers (they are collectively called "relatively" prime). Use other methods such as the Sieve of Eratosthenes or further application of larger factorization wheels to remove the remaining non-primes.

Example

Note that by using exactly the next prime number of 5 wheel cycles and eliminating the multiple(s) of that prime (and only that prime) from the resulting list, we have obtained the base wheel as per step 4 for a factorization wheel with base primes of 2, 3, and 5; this is one wheel in advance of the previous {2,3} factorization wheel. One could then follow the steps to step 10 using the next succeeding prime of 7 cycles and only eliminating the multiples of 7 from the resulting list in step 10 (leaving some "relative" primes in this case and all successive cases – i.e. some not true fully qualified primes), to get the next further advanced wheel, recursively repeating the steps as necessary to get successively larger wheels.

Analysis and computer implementation Formally, the method makes use of the following insights: first, that the set of base primes unioned with its (infinite) set of coprimes is a superset of the primes; second, that the infinite set of coprimes can be enumerated easily from the coprimes to the base set between 2 and the base set product. (Note that 1 requires special handling.)

As seen in the example above, the result of repeated applications of the above recursive procedure from steps 4 through 10 can be a wheel list which spans any desired sieving range (to which it can be truncated) and the resulting list then includes only the multiples of primes higher than one past the last-used base primes.