33 of 33 people found the following review helpful
Standard reference on the subject.,
This review is from: Prime Numbers: A Computational Perspective (Hardcover)
While recently published, this book is shaping to become the standard reference on the theory that surrounds prime numbers in a computational setting, drawing from all branches of number theory, as well as abstract algebra, analysis, combinatorics, statistics, complexity theory and elliptic curves. Surely a multidisciplinary treatise if there ever was one.
The authors' writing style, while not conversational, never gets in the way, and allows reading at many levels (from light reading to deep research). Theorems are proved only when it makes sense to do so, i.e. when the proof adds insight into the matter. The exercises are interesting and challenging, and closing each chapter are avenues of further research, referencing open problems in the literature and the authors' own opinion on interesting subjects for research.
The first chapter is an overview of theoretical and computational developments, with anything from Euclid's proof of the infinitude of primes, Riemann's study of the zeta function, down to the latest huge computation of the twin prime constant and zeros of the zeta function in the critical line. Some famous open problems are displayed as well.
The necessary number theory background is covered on Chapter 2, though the interested reader should seek a more complete treatise on the subject.
Trial division, sieving and pseudo-primality tests are fully covered in Chapter 3. There is really nothing to complain about this chapter of the book.
Chapter 4 concerns proving the primality of integers. Many results are presented from the classical (meaning not involving elliptic curves) primality tests, and again there is nothing to complain.
Many people, such as myself, are drawn to the book for the integer factoring algorithms, and they're not going to be disappointed. Unfortunately, modern factoing algorithms deserve a book on its own, and it's impossible to cover all the ground in the space alloted to them in this book. The authors do a pretty good job of introducing them, even if the explanation is unclear and a bit shallow at times, and they always reference other works on the field for further information they were unable to cover.
Chapter 7, ``Elliptic Curve Arithmetic,'' is a great starting point for elliptic curve studies, with a no-nonsense introduction to the subject that is certainly enough for the algorithms that follow. These include Lenstra's Elliptic Curve Method of factorization; Shanks-Mestre's, Schoof's and Atkin-Morain's algorithms for assessing curve order; and Goldwasser-Kilian's and Atkin-Morain's primality proving algorithms.
Almost as valuable as the rest of the book itself (at least for implementers) is the ninth and last chapter, ``Fast algorithms for large-integer arithmetic.'' Many of these can be carried over without effort to floating point, so the scope of the material is even broader than the authors claim. Having read parts of Knuth's ``The Art of Computer Programming: Seminumerical Algorithms,'' I can attest to the superb exposition of Crandall and Pomerance being a breath of fresh air in this field. This book belongs on the shelf of every programmer implementing multiprecision arithmetic for this chapter alone.