I1M2012: Sumas de factoriales que dan cuadrados perfectos

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentado la solución con Haskell de un problema propuesto en la revista Mathematics Magazine. Su enunciado es

Encontrar todos los enteros positivos m y n para los que se
cumpla que: 1!+2!+3!+ \dots +n!=m^2.

Su traducción directa es

o, usando let,

donde

  • (sumaFactoriales n) es la suma de los factoriales de 1 a n

  • (factorial n) es el factorial de n.

  • (esCuadrado x) se verifica si x es un cuadrado perfecto.

Con esta definición se encuentran las siguientes soluciones

Se observa que después de calcular las dos primeras sigue buscando por lo que hay que terminar el cálculo (con C-c C-c) sin encontrar más soluciones.

Que las dos primeras son soluciones se comprueba fácilmente:

  • 1! = 1 = 1^2
  • 1!+2!+3! = 9 = 3^2.

Vamos a investigar porqué no hay más soluciones. Para ello, empezamos calculando las sumas de los factoriales

Se observa que, a partir de la cuarta, todas terminan en 3. Por otra parte, calculando los cuadrados de los dígitos

se observa que ninguno termina en 3; es decir, ningún cuadrado perfecto temina en 3.

Para terminar, nos falta demostrar la conjetura anterior (si n>3, entonces 1!+2!+3!+ \dots +n! termina en 3). Para ello calculamos los primeros factoriales

Se observa que para n=4 termina en 3 (es 1+2+6+24=33) y que, para n>4, el último dígito de n! es 0 (que es fácil de demostrar ya que si n>4, entre los factores de n están el 2 y el 5).

I1M2012: Último dígito del producto de números de Fermat

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentado la solución con Haskell de un problema propuesto para la Olimpiada Internacional de Matemáticas (IMO) de 1971. Su enunciado es

Sea x_n = 2^{2^n} + 1 y sea m el producto de x_2, x_3, \dots, x_{1971}. Calcular el último dígito de m.

La primera definición es la traducción directa del enunciado

donde (x n) es el n-ésimo término de la sucesión

y (ultimo x) es el último dígito de x

Aunque la primera solución es simple, tiene un inconveniente: Haskell no puede calcular números tan grandes. Una estrategia para resolverlo es considerar casos menores y buscar alguna regularidad. Para ello, generalizamos la primera solución sustituyendo 1971 por una variable.

Con la 2ª definición calculamos el último dígito de los primeros productos

Se observa que el resultado está formado por la repetición de los números 7, 9, 3 y 1. A partir de la observación conjeturamos una nueva definición

Podemos comprobar, para pequeños valores, que las 2 definiciones son equivalentes

Además, con la 3ª definición se puede calcular la solución del problema original

es decir, el último dígito del producto x_2x_3 \dots x_{1971} es 9.

Para justificar la solución, hay que demostrar que la definición sol3 es correcta; es decir, que los últimos dígitos de los productos forman la sucesión 7, 9, 3, 1, 7, 9, 3, 1, 7, 9, 3, 1, 7, 9, 3, 1, 7, 9, 3, … Para ello, observamos el último dígito de los x_n

Se observa que todos son 7. Esto justifica la sucesión de los productos, ya que cada término es el último dígito del producto del anterior por 7. Además, permite una nueva definición de la solución por recursión

Podemos comprobar, para pequeños valores, que es equivalente a la anterior

Para terminar, sólo queda demostrar que si n>1, entonces el último dígito de 2^{2^n} + 1 es 7 o, equivalentemente, que el último dígito de 2^{2^n} es 6. Lo que se tiene ya que 2^{2^n} = 2^{2\cdot2^{n-1}} = (2^2)^{2^{n-1}} = 4^{2^{n-1}}. Además, como n>1 se tiene que 2^{n-1} es un número par mayor que 0 y, por tanto, el último dígito de 4^{2^{n-1}} es 6.