El número de Mersenne 47 en Haskell

En el artículo Cruce de listas abordamos el tema de la simplicidad y eficiencia de las soluciones. En este artículo deseo mostrar la capacidad de Haskell para calcular con grandes números enteros. Para ello, he elegido calcular el último primo de Mersenne descubierto.

Los números primos de Mersenne son los primos de la forma 2^n-1. El último primo de Mersenne descubierto es M_{47}=2^{43112609}-1 que es un número con más de 12 millones de cifras. El descubrimiento lo realizó Edson Smith el 23 de agosto de 2008. Dicho número es el 47 primo de Mersenne conocido.

Para calcular con Haskell el valor de M_{47}=2^{43112609}-1, escribimos en el fichero mersenne.hs su definición

A continuación, compilamos el fichero

Finalmente, lo ejecutamos obteniendo el tiempo de ejecución y
escribiendo el número en el fichero mersenne.txt

El fichero con el número puede leerse aquí.

Como se puede observar, el cálculo ha sido simple y eficiente.

Otra problema más difícil es comprobar que el número obtenido es primo.

Sería interesante comparar el cálculo de M_{47} en otros lenguajes. Todas las soluciones alternativas serán bienvenidas e incorporadas a este artículo.