Menu Close

Conjetura de Rassias

El artículo de esta semana del blog Números y hoja de cálculo está dedicado a la Conjetura de Rassias. Dicha conjetura afirma que

Para cada número primo p > 2 existen dos primos a y b, con a < b, tales que
(p-1)a = b+1

Dado un primo p > 2, los pares de Rassia de p son los pares de primos (a,b), con a < b, tales que (p-1)a = b+1. Por ejemplo, (2,7) y (3,11) son pares de Rassia de 5 ya que

  • 2 y 7 son primos, 2 < 7 y (5-1)·2 = 7+1
  • 3 y 11 son primos, 3 < 11 y (5-1)·3 = 11+1

Definir las siguientes funciones

   paresRassias     :: Integer -> [(Integer,Integer)]
   conjeturaRassias :: Integer -> Bool

tales que

  • (paresRassias p) es la lista de los pares de Rassias del primo p (que se supone que es mayor que 2). Por ejemplo,
     take 3 (paresRassias 5)    == [(2,7),(3,11),(5,19)]
     take 3 (paresRassias 1229) == [(71,87187),(113,138763),(191,234547)]
  • (conjeturaRassia x) se verifica si para todos los primos menores que x (y mayores que 2) se cumple la conjetura de Rassia. Por ejemplo,
     conjeturaRassias (10^5)  ==  True

Soluciones

import Data.Numbers.Primes (primes, isPrime)
 
paresRassias :: Integer -> [(Integer,Integer)]
paresRassias p =
  [(a,b) | a <- primes
         , let b = (p - 1) * a - 1
         , isPrime b]
 
conjeturaRassias :: Integer -> Bool
conjeturaRassias x =
  and [(not . null . paresRassias) p | p <- tail (takeWhile (<x) primes)]

Referencias

2 soluciones de “Conjetura de Rassias

  1. Chema Cortés
    import Data.Numbers.Primes
     
    paresRassias :: Integer -> [(Integer,Integer)]
    paresRassias p = [(a,b) | a <- primes, let b = (p-1)*a - 1, isPrime b]
     
    conjeturaRassias :: Integer -> Bool
    conjeturaRassias n = and [(not.null.paresRassias) x | x <- takeWhile (<n) (tail primes)]
  2. Juanjo Ortega (juaorture)
     
    import Data.Numbers.Primes
     
    paresRassias :: Integer -> [(Integer,Integer)]
    paresRassias n  = [(a,b)| a <- primes
                            , let b = (n-1) * a - 1
                            , isPrime b
                            , b > a ]
     
    conjeturaRassias :: Integer -> Bool
    conjeturaRassias n = and [paresRassias a /= [] | a <- [3..n]
                                                    , isPrime a ]
     
    -- *Main> conjeturaRassias (10^5)
    -- True
    -- (2.14 secs, 4,983,139,000 bytes)

Escribe tu solución

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.