Huecos de Aquiles
Un número de Aquiles es un número natural n que es potente (es decir, si p es un divisor primo de n, entonces p² también lo es) y no es una potencia perfecta (es decir, no existen números naturales m y k tales que n es igual a m^k). Por ejemplo,
- 108 es un número de Aquiles proque es un número potente (ya que su factorización es 2^2 · 3^3, sus divisores primos son 2 and 3 y sus cuadrados (2^2 = 4 y 3^2 = 9) son divisores de 108. Además, 108 no es una potencia perfecta.
- 360 no es un número de Aquiles ya que 5 es un divisor primo de 360, pero 5^2 = 15 no lo es.
- 784 no es un número de Aquiles porque, aunque es potente, es una potencia perfecta ya que 784 = 28^2.
Los primeros números de Aquiles son
72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, ...
Definir las funciones
esAquiles :: Integer -> Bool huecosDeAquiles :: [Integer] graficaHuecosDeAquiles :: Int -> IO ()
tales que
- (esAquiles x) se verifica si x es un número de Aquiles. Por ejemplo,
esAquiles 108 == True esAquiles 360 == False esAquiles 784 == False esAquiles 5425069447 == True esAquiles 5425069448 == True
- huecosDeAquiles es la sucesión de la diferencias entre los números de Aquiles consecutivos. Por ejemplo,
λ> take 15 huecosDeAquiles [36,92,88,104,40,68,148,27,125,64,104,4,153,27,171]
- (graficaHuecosDeAquiles n) dibuja la gráfica de los n primeros huecos de Aquiles. Por ejemplo, (graficaHuecosDeAquiles 160) dibuja

(grafica [10..100]) dibuja
y (grafica [100..200]) dibuja