The number of steps required in an algorithm varies with the size of the input variables. For example, the Euclidean Algorithm can find the greatest common divisor of m,n, where m < n, in O(lnn) steps (in the big O notation). Preferentially, an algorithm will terminate in polynomial time (such as quick sort), which means that the number of steps is bounded above by a polynomial, and consequently the algorithm does not quickly become unmanageable as the input’s size increases. But some important problems have no known solution in polynomial time such as factorization of integers and the travelling salesman problem. See Millennium Prize problems.