0votos

Conjetura de Goldbach. (con recursividad en cualquier lenguaje) en Haskell

por josejuan hace 4 años

.

Todo número par mayor que 2 puede escribirse como suma de 2 números primos. Cabe notar que se puede emplear dos veces el mismo número primo. Por ejemplo: 4=2+2; 6=3+3; 8=3+5; 10=3+7; 12=5+7; etc

1
2
3
4
5
6
7
8
9
10
11
12
import System.Environment 
import Data.List 
import Data.Numbers.Primes 
import qualified Data.IntMap as M 
 
checkGoldbachTo :: Int -> Bool 
checkGoldbachTo n = 4 == 2 + 2 && [6, 8..n] == fromPrimeSum 
                    where fromPrimeSum = M.keys $ M.fromListWith const 
                                            [(z, 0) | t@(p:_) <- tails (takeWhile (<n) $ tail primes) 
                                                    , z <- takeWhile (<=n) $ map (p+) t ] 
 
main = getArgs >>= print . checkGoldbachTo . read . head 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.