Ir al contenido principal

Postulado de Bertrand

El postulado de Bertrand afirma que para cualquier número entero n > 1, existe al menos un número primo p con n < p < 2n.

Definir la función

siguientePrimo :: Integer -> Integer

tal que (siguientePrimo n) es el menor primo mayor que n. Por ejemplo,

siguientePrimo 8   ==  11
siguientePrimo 11  ==  13

Comprobar con QuickCheck el postulado de Bertrand; es decir, para todo entero n > 1, se verifica que n < p < 2n, donde p es (siguientePrimo n).


Soluciones

...
import Data.Numbers.Primes
import Test.QuickCheck

siguientePrimo :: Integer -> Integer
siguientePrimo n = head (dropWhile (<= n) primes)

-- La propiedad es
postuladoDeBertrand :: Integer -> Property
postuladoDeBertrand n =
  n > 1 ==> n < p && p < 2 * n
  where p = siguientePrimo n

-- La comprobación es
--    λ> quickCheck postuladoDeBertrand
--    +++ OK, passed 100 tests.

Referencias