A un primo de un múltiplo del inverso en Haskell

La semana pasada en el blog Números y algo más se planteó el problema Igual a un múltiplo del “inverso” mas/ menos un primo cuyo enunciado es el siguiente:

El número 21 es el menor número que es igual a un múltiplo de sí mismo dado vuelta (2 x12) más/menos (-3) un primo menor que él:
      21 = 12 x 2 – 3
El siguiente es:
      31 = 13 x 2 + 5
En este caso vemos que el número original también es primo.

La solución 13 = 31 x 6 – 173 no es válida ya que 173 a pesar de ser primo es mayor que 13.

Buscando sólo primos que tengan esta propiedad el siguiente que cumple es el 41 y para el cual tenemos dos soluciones:
      41 = 14 x 2 + 13
      41 = 14 x 5 – 29

El primer primo que tiene cuatro soluciones es el 61:
      61 = 16 x 2 + 29
      61 = 16 x 3 + 13
      61 = 16 x 4 – 3
      61 = 16 x 5 – 19

¿Cuál es el primer primo que tiene cinco soluciones? ¿y el primero que tiene seis?

A partir de dicho problema he escrito en LógicaMente dos relaciones de ejercicios. La primera usando una definición elemental de números primos y la segunda usando la librería Data.Numbers.Primes. Finalmente se compara la eficiencia de ambas definiciones para resolver el problema.

La primera relación es la siguiente

La segunda relación es

La comparación del espacio y tiempo utilizado es
<br /> \begin{array}{|l|l|l|l|l|} \hline<br /> x & t1        & t2        & e1                & e2 \\ \hline<br /> 5 & 2.99\ secs & 0.02\ secs & 335.729.840\ bytes & 4.207.796\ bytes \\ \hline<br /> 6 & 5.46\ secs & 0.04\ secs & 577.386.544\ bytes & 6.299.076\ bytes \\ \hline<br /> \end{array}<br />