We want to know whether a given integer is prime or not. Certainly we can find out by factoring it. Can you think of any other way? Well, there is, and the major discovery in this area is that primality testing is much easier than factoring, at least to current knowledge. One can test integers with many thousands of digits, but factoring numbers with only 300 digits is in general not feasible.
In this chapter, we provide an efficient probabilistic algorithm to test primality; factorization is the subject of the next chapter. As an easy application, we can also find large prime numbers, as they are required in some modular algorithms and in modern cryptography. We conclude with brief discussions of other primality testing algorithms. The long-standing quest for a deterministic polynomial-time primality test, stated as a Research Problem in the first two editions of this book, was resolved by Agrawal, Kayal & Saxena (2004).
For numbers of a special form, such as the Mersenne numbersMn = 2n − 1, particularly efficient methods have been known since the 19th century. Indeed, throughout history the largest known prime has usually been a Mersenne prime.