De forma más explícita y con ciertas comprobaciones, la descripción del algoritmo correspondería a este programa: