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
- Bertrand's postulate en Wikipedia.