在 Haskell 中实现哥德巴赫猜想

Implement Goldbach's conjecture in Haskell

所以哥德巴赫猜想说每个大于2的正偶数都是两个质数之和。我正在尝试编写一个 Haskell 程序,给定一个正偶数,该程序将找到这 2 个质数:

goldbach n = head [(x,y) | x <- primesR 2 (n-1),
                           let y = n-x-1, isPrime y]

其中 primesR 在下面给出为(returns 个范围内的素数):

primesR :: Integral a => a -> a -> [a]
primesR a b = takeWhile (<= b) $ dropWhile (< a) $ sieve [2..]
  where sieve (n:ns) = n:sieve [ m | m <- ns, m `mod` n /= 0 ]

但是,这并不能始终给我正确的素数。我认为我的索引已关闭,但我不确定 how/where?

原来问题是一个小逻辑错误:

goldbach n = head [(x,y) | x <- primesR 2 (n-1),
                           let y = n-x, isPrime y]

因为 n 应该是 x+y 它应该是 let y=n-x 而不是