Euclid’s ancient recipe gets to the heart of four key characteristics any algorithm should ideally possess: 1. It should consist of a precisely stated and unambiguous set of instructions. 2. The procedure should always finish, regardless of the numbers you insert. (It should not enter an infinite loop!) 3. It should give the answer for any values input into the algorithm. 4. Ideally it should be fast.