- Finiteness. An algorithm must always terminate in a finite number of steps. A procedure that has all of the characteristics of an algorithm, except that it does not always terminate, may be called a computational method. A procedure that continually interacts with its environment without terminating is a reactive process.
- Definiteness. The steps to be taken must be precisely defined and unambiguous. “Add a dash of salt” is not a definite step.
- Input. An algorithm has zero or more inputs; these may be given before the program begins, or dynamically as the algorithm runs. The inputs are from specified sets (e.g. positive integers).
- Output. An algorithm has at least one output; these outputs have a specified relation to the inputs.
- Effectiveness. Someone must be able to compute each of the steps of the algorithm with a pen and paper in finite time. An example of a noneffective step is “If 4 is the largest integer n for which there is a solution to the equation wn+xn+yn=zn in positive integers w, x, y and z, then go to step E4”. This could become an effective step if someone were to produce an algorithm to determine whether 4 is the largest such integer.