An algorithm must satisfy the following properties:

  • Input: The algorithm must have input valuesfrom a specified set.
  • Output: The algorithm must produce the output valuesfrom a specified set of input values. The output values are the solution to a problem.
  • Finiteness: For any input, the algorithm must terminate after a finite number of steps.
  • Definiteness: All steps of the algorithm must be precisely defined.
  • Effectiveness: It must be possible to perform each step of the algorithm correctly and in a finite amount of time. That is, its steps must be basic enough so that, for example, someone using a pencil and a paper could carry them out exactly, and in a finite amount of time. It is not enough that each step is definite (or precisely defined), but it must also be feasible.