One of my favorite programming books.
Filled with gems like this:
Numbers that fool the Fermat test are called Carmichael numbers, and little is
known about them other than that they are extremely rare. There are 255 Carmichael
numbers below 100,000,000. the smallest few are 561, 1105, 1729, 2465, 2821, and 6601.
In testing primality of very large numbers chosen at random, the chance of stumbling
upon a value that fools the Fermat test is less than the chance that cosmic radiation will
cause the computer to make an error in carrying out a “correct” algorithm. Considering
an algorithm to be inadequate for the first reason but not for the second illustrates the
difference between mathematics and engineering.
Full Text - https://web.mit.edu/6.001/6.037/sicp.pdf