We propose a polynomial time primal–dual potential reduction algorithm for linear programming. The algorithm generates sequences dk and vk rather than a primal–dual interior point (xk, sk), where dki = √(xki/ski) and vki = √(xkiski) for i = 1, 2, . . . , n. Only one element of dk is changed in each iteration, so that the work per iteration is bounded by O(mn) using rank-1 updating techniques. The usual primal–dual iterates xk and sk are not needed explicitly in the algorithm, whereas dk and vk are iterated so that the interior primal–dual solutions can always be recovered by aforementioned relations between (xk, sk) and (dk, vk) with improving primal–dual potential function values. Moreover, no approximation of dk is needed in the computation of projection directions.