Review of "Primality Testing in Polynomial Time by Martin Dietzfelbinger", Springer-Verlag, 2004

In August, 2002 Manindra Agrawal, Neeraj Kayal, and Nitin Saxena posted an astonishing paper on the Web with the simple title: “Primes is in P .” The AKS paper was astonishing not only because it resolved a widely-studied question that had been open for roughly 30 years (or 200 years, or 2000 years, depending on how one chooses to count such things), but also because the techniques used in the paper were almost completely elementary, relying almost entirely on standard undergraduate algebra. The paper caused quite a stir within the computer science community, and within days (even hours!) of its posting numerous researchers had already verified the proof, given seminars on the result, and suggested improvements and simplifications (to the point where the proof now relies entirely on undergraduate algebra alone). Due to its fundamental nature, its accessibility, and its relevance to a wide range of disciplines, it is fair to say that the paper is probably the most widely read paper in theoretical computer science of the past 5 years. The meaning of the result stated in the title is that it is possible to decide in deterministic polynomial time whether a given number n is prime or composite (here, the running time is measured as a function of the length of the binary representation of n). It is worth remarking that the result has little practical significance: randomized polynomial-time algorithms for the same problem (with exponentially-small probability of error) have been known and widely used since the late 1970s, and the deterministic algorithm given in the AKS paper is much slower than these; furthermore, the techniques do not currently seem to shed any light on the problem of factoring n efficiently, should it be determined that n is not prime. From a theoretical point of view, however, the paper resolved a fundamental open question and moreover did so using beautifully simple techniques. The aim of Primality Testing in Polynomial Time, by Martin Dietzfelbinger, is to lead the reader through a full proof of the AKS result without assuming much more than mathematical maturity on the part of the reader. (Indeed, though the reader who has never seen group theory before might find the book tough going, all the algebra necessary for the proof is developed from scratch in the book.) It is a testament to the simplicity of the AKS result that such an accomplishment is feasible. The book can logically be separated into two parts: the first covering introductory material and the second covering the AKS result itself. Chapters 1–7 (as well as an Appendix) contain the introductory material. Chapters 1 and 2 motivate the problem and cover the basics of algorithmic notation and complexity theory. These chapters are intended for mathematicians, as an undergraduate computer science major should be comfortable with such material. Chapter 3 describes results and terminology from basic number theory, including the Euclidean algorithm for finding the greatest common divisor of two numbers, modular arithmetic, the Chinese remainder theorem, and the density of prime numbers. This