Los números de Ulam en Haskell

Los números de Ulam son los elementos de la sucesión u(n) definida por u(1) = 1, u(2) = 2 y, para n > 2, u(n) es el entero más pequeño que se puede escribir exactamente de una forma como suma de dos términos anteriores diferentes entre sí.

Según la definición, 3=1+2 es un número de Ulam y 4=1+3 también es un número de Ulam (la suma 4=2+2 no cuenta porque los términos previos deben ser distintos). El entero 5 no es un número de Ulam porque 5=1+4=2+3.

Los primeros términos de la sucUlam son: 1, 2, 3, 4, 6, 8, 11, 13, 16, 18, 26, 28, 36, 38, 47, 48, 53, 57, 62, 69, 72, 77, 82, 87, 97, 99.

Esta sucesión fue definida por el matemático polaco Stanislaw Ulam y
publicada en SIAM Review en 1964.

A partir de los artículos de la Wikipedia y de MathWorld sobre los números de Ulam elaborado la siguiente relación de ejercicios de Haskell para la asignatura de Informática de 1º del Grado en Matemáticas.

En la relación se presentan cuatro definiciones de los números de Ulam, se compara su eficiencia, se muestra algunas de sus propiedades terminando con los números de Ulam generalizados.

A continuación se muestran las figuras de los ejercicios 15, 16 y 18.

  • Figura 1: 10 primeros números de Ulam calculados con
    (dibujoSucUlam 10)
    Fig.1: 10 primeros números de Ulam
    Fig.1: 10 primeros números de Ulam

  • Figura 2: 1000 primeros números de Ulam calculados con
    (dibujoSucUlam 1000)
    Fig. 2: 1000 primeros números de Ulam
    Fig. 2: 1000 primeros números de Ulam

  • Figura 3: Aproximaciones lineales de la sucesión de Ulam calculadas con
    (dibujoSucUlamAproxLin 12 14 3000)
    Fig. 3: Aproximaciones lineales de la sucesión de Ulam
    Fig. 3: Aproximaciones lineales de la sucesión de Ulam

  • Figura 4: Densidad de la sucesión de Ulam calculada con
    (dibujoDensidadU 1 3000)
    Fig. 4: Densidad de la sucesión de Ulam
    Fig. 4: Densidad de la sucesión de Ulam