
In
mathematics
Mathematics is a field of study that discovers and organizes methods, Mathematical theory, theories and theorems that are developed and Mathematical proof, proved for the needs of empirical sciences and mathematics itself. There are many ar ...
, the sieve of Pritchard is an
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
for finding all
prime number
A prime number (or a prime) is a natural number greater than 1 that is not a Product (mathematics), product of two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime ...
s up to a specified bound.
Like the ancient
sieve of Eratosthenes
In mathematics, the sieve of Eratosthenes is an ancient algorithm for finding all prime numbers up to any given limit.
It does so by iteratively marking as composite number, composite (i.e., not prime) the multiples of each prime, starting with ...
, it has a simple conceptual basis in
number theory
Number theory is a branch of pure mathematics devoted primarily to the study of the integers and arithmetic functions. Number theorists study prime numbers as well as the properties of mathematical objects constructed from integers (for example ...
.
It is especially suited to quick hand computation for small bounds.
Whereas the sieve of Eratosthenes marks off each non-prime for each of its prime factors, the sieve of Pritchard avoids considering almost all non-prime numbers by building progressively larger wheels, which represent the pattern of numbers not divisible by any of the primes processed thus far.
It thereby achieves a better
asymptotic complexity
In computer science, the computational complexity or simply complexity of an algorithm is the amount of resources required to run it. Particular focus is given to computation time (generally measured by the number of needed elementary operations ...
, and was the first sieve with a running time sublinear in the specified bound.
Its asymptotic running-time has not been improved on, and it deletes fewer composites than any other known sieve.
It was created in 1979 by Paul Pritchard.
Since Pritchard has created a number of other sieve algorithms for finding prime numbers,
the sieve of Pritchard is sometimes singled out by being called ''the wheel sieve'' (by Pritchard himself
) or ''the dynamic wheel sieve''.
Overview
A
prime number
A prime number (or a prime) is a natural number greater than 1 that is not a Product (mathematics), product of two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime ...
is a
natural number
In mathematics, the natural numbers are the numbers 0, 1, 2, 3, and so on, possibly excluding 0. Some start counting with 0, defining the natural numbers as the non-negative integers , while others start with 1, defining them as the positive in ...
that has no natural number
divisor
In mathematics, a divisor of an integer n, also called a factor of n, is an integer m that may be multiplied by some integer to produce n. In this case, one also says that n is a '' multiple'' of m. An integer n is divisible or evenly divisibl ...
s other than the number 1 and itself.
To find all the prime numbers less than or equal to a given integer , a sieve algorithm examines a
set
Set, The Set, SET or SETS may refer to:
Science, technology, and mathematics Mathematics
*Set (mathematics), a collection of elements
*Category of sets, the category whose objects and morphisms are sets and total functions, respectively
Electro ...
of candidates in the range , and eliminates those that are not prime, leaving the primes at the end. The
sieve of Eratosthenes
In mathematics, the sieve of Eratosthenes is an ancient algorithm for finding all prime numbers up to any given limit.
It does so by iteratively marking as composite number, composite (i.e., not prime) the multiples of each prime, starting with ...
examines all of the range, first removing all multiples of the first prime 2, then of the next prime 3, and so on. The sieve of Pritchard instead examines a subset of the range consisting of numbers that occur on successive wheels, which represent the pattern of numbers left after each successive prime is processed by the sieve of Eratosthenes.
For , the th wheel represents this pattern. It is the set of numbers between 1 and the product of the first prime numbers that are not divisible by any of these prime numbers (and is said to have an associated ''length'' ). This is because adding to a number does not change whether it is divisible by one of the first prime numbers, since the remainder on division by any one of these primes is unchanged.
So with length represents the pattern of odd numbers; with length represents the pattern of numbers not divisible by 2 or 3; etc. Wheels are so-called because can be usefully visualized as a circle of circumference with its members marked at their corresponding distances from an origin. Then rolling the wheel along the number line marks points corresponding to successive numbers not divisible by one of the first prime numbers. The animation shows being rolled up to 30.

It is useful to define for to be the result of rolling up to . Then the animation generates . Note that up to , this consists only of 1 and the primes between 5 and 25.
The sieve of Pritchard is derived from the observation
that this holds generally: for all , the values in are 1 and the primes between and . It even holds for , where the wheel has length 1 and contains just 1 (representing all the natural numbers). So the sieve of Pritchard starts with the trivial wheel and builds successive wheels until the square of the wheel's first member after 1 is at least . Wheels grow very quickly, but only their values up to are needed and generated.
It remains to find a method for generating the next wheel. Note in the animation that can be obtained by rolling up to 30 and then removing 5 times each member of .This also holds generally: for all , .
Rolling past just adds values to , so the current wheel is first extended by getting each successive member starting with , adding to it, and inserting the result in the set. Then the multiples of are deleted. Care must be taken to avoid a number being deleted that itself needs to be multiplied by . The sieve of Pritchard as originally presented
does so by first skipping past successive members until finding the maximum one needed, and then doing the deletions in reverse order by working back through the set. This is the method used in the first animation above. A simpler approach is just to gather the multiples of in a list, and then delete them. Another approach is given by Gries and Misra.
If the main loop terminates with a wheel whose length is less than , it is extended up to to generate the remaining primes.
The algorithm, for finding all primes up to ', is therefore as follows:
# Start with a set and representing wheel 0, and prime .
# As long as , do the following:
## if , then
### extend by repeatedly getting successive members of starting with 1 and inserting into as long as it does not exceed or ;
### increase to the minimum of and .
## repeatedly delete times each member of ' by first finding the largest and then working backwards.
## note the prime , then set to the next member of after 1 (or 3 if was 2).
# if , then extend to by repeatedly getting successive members of starting with 1 and inserting into ' as long as it does not exceed ';
# On termination, the rest of the primes up to ' are the members of ' after 1.
Example
To find all the prime numbers less than or equal to 150, proceed as follows.
Start with wheel 0 with length 1, representing all natural numbers 1, 2, 3...:
1
The first number after 1 for wheel 0 (when rolled) is 2; note it as a prime. Now form wheel 1 with length 21 = 2 by first extending wheel 0 up to 2 and then deleting 2 times each number in wheel 0, to get:
1
The first number after 1 for wheel 1 (when rolled) is 3; note it as a prime. Now form wheel 2 with length 32 = 6 by first extending wheel 1 up to 6 and then deleting 3 times each number in wheel 1, to get
1 5
The first number after 1 for wheel 2 is 5; note it as a prime. Now form wheel 3 with length 56 = 30 by first extending wheel 2 up to 30 and then deleting 5 times each number in wheel 2 (in reverse order!), to get
1 7 11 13 17 19 23 29
The first number after 1 for wheel 3 is 7; note it as a prime. Now wheel 4 has length 730 = 210, so we only extend wheel 3 up to our limit 150. (No further extending will be done now that the limit has been reached.) We then delete 7 times each number in wheel 3 until we exceed our limit 150, to get the elements in wheel 4 up to 150:
1 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 121 127 131 137 139 143 149
The first number after 1 for this partial wheel 4 is 11; note it as a prime. Since we have finished with rolling, we delete 11 times each number in the partial wheel 4 until we exceed our limit 150, to get the elements in wheel 5 up to 150:
1 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149
The first number after 1 for this partial wheel 5 is 13. Since 13 squared is at least our limit 150, we stop. The remaining numbers (other than 1) are the rest of the primes up to our limit 150.
Just 8 composite numbers are removed, once each. The rest of the numbers considered (other than 1) are prime. In comparison, the natural version of Eratosthenes sieve (stopping at the same point) removes composite numbers 184 times.
Pseudocode
The sieve of Pritchard can be expressed in
pseudocode
In computer science, pseudocode is a description of the steps in an algorithm using a mix of conventions of programming languages (like assignment operator, conditional operator, loop) with informal, usually self-explanatory, notation of actio ...
, as follows:
algorithm Sieve of Pritchard is
input: an integer ''N'' >= 2.
output: the set of prime numbers in .
let ''W'' and ''Pr'' be sets of
integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
values, and all other variables
integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
values.
''k'', ''W'', ''length'', ''p'', ''Pr'' := 1, , 2, 3, ;
while ''p''
2 <= ''N'' do
if (''length'' < ''N'') then
Extend ''W'',''length'' to minimum of ''p''*''length'',''N'';
Delete multiples of ''p'' from ''W'';
Insert ''p'' into ''Pr'';
''k'', ''p'' := ''k''+1, next(''W'', 1)
if (''length'' < ''N'') then
Extend ''W'',''length'' to ''N'';
return ''Pr''
''W'' - ;
where is the next value in the ordered set after .
procedure Extend ''W'',''length'' to ''n'' is
integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
w, x;
''w'', ''x'' := 1, ''length''+1;
while ''x'' <= ''n'' do
Insert ''x'' into ''W'';
''w'' := next(''W'',''w'');
''x'' := ''length'' + ''w'';
''length'' := ''n'';
procedure Delete multiples of ''p'' from ''W'',''length'' is
integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
w;
''w'' := ''p'';
while ''p''*''w'' <= ''length'' do
''w'' := next(''W'',''w'');
while ''w'' > 1 do
''w'' := prev(''W'',''w'');
Remove ''p''*''w'' from ''W'';
where is the previous value in the ordered set ' before '. The algorithm can be initialized with instead of at the minor complication of making a special case when .
This abstract algorithm uses ordered sets supporting the operations of insertion of a value greater than the maximum, deletion of a member, getting the next value after a member, and getting the previous value before a member. Using one of
Mertens' theorems (the third) it can be shown to use of these operations and additions and multiplications.
Implementation
An array-based doubly-linked list can be used to implement the ordered set , with storing and storing . This permits each abstract operation to be implemented in a small number of operations. (The array can also be used to store the set "for free".) Therefore the
time complexity
In theoretical computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations ...
of the sieve of Pritchard to calculate the primes up to in the
random access machine
In computer science, random-access machine (RAM or RA-machine) is a model of computation that describes an abstract machine in the general class of register machines. The RA-machine is very similar to the counter machine but with the added cap ...
model is operations on words of size . Pritchard also shows how multiplications can be eliminated by using very small multiplication tables,
so the
bit complexity
The bit is the most basic unit of information in computing and digital communication. The name is a portmanteau of binary digit. The bit represents a logical state with one of two possible values. These values are most commonly represented as ...
is bit operations.
In the same model, the
space complexity
The space complexity of an algorithm or a data structure is the amount of memory space required to solve an instance of the computational problem as a function of characteristics of the input. It is the memory required by an algorithm until it exec ...
is words, i.e., bits. The sieve of Eratosthenes requires only 1 bit for each candidate in the range 2 through , so its space complexity is lower at bits. Note that space needed for the primes is not counted, since they can printed or written to external storage as they are found. Pritchard
presented a variant of his sieve that requires only bits without compromising the sublinear time complexity, making it asymptotically superior to the natural version of the sieve of Eratostheses in both time and space.
However, the sieve of Eratostheses can be optimized to require much less memory by operating on successive segments of the natural numbers. Its space complexity can be reduced to bits without increasing its time complexity.
This means that in practice it can be used for much larger limits than would otherwise fit in memory, and also take advantage of fast cache memory. For maximum speed, it is also optimized using a small wheel to avoid sieving with the first few primes (although this does not change its asymptotic time complexity). Therefore the sieve of Pritchard is not competitive as a practical sieve over sufficiently large ranges.
Geometric model

At the heart of the sieve of Pritchard is an algorithm for building successive wheels. It has a simple geometric model as follows:
# Start with a circle of circumference 1 with a mark at 1.
# To generate the next wheel:
## Go around the wheel and find (the distance to) the first mark after 1; call it .
## Create a new circle with times the circumference of the current wheel.
## Roll the current wheel around the new circle, marking it where a mark touches it.
## Magnify the current wheel by and remove the marks that coincide.
For the first 2 iterations it is necessary to continue round the circle until 1 is reached again.
The first circle represents , and successive circles represent wheels . The animation on the right shows this model in action up to .
It is apparent from the model that wheels are symmetric. This is because is not divisible by one of the first primes if and only if is not so divisible. It is possible to exploit this to avoid processing some composites, but at the cost of a more complex algorithm.
Related sieves
Once the wheel in the sieve of Pritchard reaches its maximum size, the remaining operations are equivalent to those performed by
Euler's sieve.
The sieve of Pritchard is unique in conflating the set of prime candidates with a dynamic wheel used to speed up the sifting process. But a separate static wheel (as frequently used to speed up the sieve of Eratosthenes) can give an speedup to the latter, or to linear sieves, provided it is large enough (as a function of ). Examples are the use of the largest wheel of length not exceeding to get a version of the sieve of Eratosthenes that takes additions and requires only bits,
and the speedup of the naturally linear
sieve of Atkin
In mathematics, the sieve of Atkin is a modern algorithm for finding all prime numbers up to a specified integer. Compared with the ancient sieve of Eratosthenes, which marks off multiples of primes, the sieve of Atkin does some preliminary work ...
to get a sublinear optimized version.
Bengalloun found a linear ''smoothly incremental'' sieve, i.e., one that (in theory) can run indefinitely and takes a bounded number of operations to increment the current bound . He also showed how to make it sublinear by adapting the sieve of Pritchard to incrementally build the next dynamic wheel while the current one is being used. Pritchard
showed how to avoid multiplications, thereby obtaining the same asymptotic bit-complexity as the sieve of Pritchard.
Runciman provides a functional algorithm
inspired by the sieve of Pritchard.
See also
*
Sieve of Eratosthenes
In mathematics, the sieve of Eratosthenes is an ancient algorithm for finding all prime numbers up to any given limit.
It does so by iteratively marking as composite number, composite (i.e., not prime) the multiples of each prime, starting with ...
*
Sieve of Atkin
In mathematics, the sieve of Atkin is a modern algorithm for finding all prime numbers up to a specified integer. Compared with the ancient sieve of Eratosthenes, which marks off multiples of primes, the sieve of Atkin does some preliminary work ...
*
Sieve theory
Sieve theory is a set of general techniques in number theory, designed to count, or more realistically to estimate the size of, sifted sets of integers. The prototypical example of a sifted set is the set of prime numbers up to some prescribed limi ...
*
Wheel factorization
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
Fo ...
References
{{DEFAULTSORT:Sieve Of Pritchard
Primality tests
Articles with example pseudocode
Sieve theory
Algorithms