所以哥德巴赫猜想说,每一个大于 2 的正偶数都是两个素数之和。我正在尝试编写一个 Haskell 程序,该程序将在给定一个正偶数的情况下找到这两个素数:
goldbach n = head [(x,y) | x <- primesR 2 (n-1),
let y = n-x-1, isPrime y]
其中primesR
如下给出(返回范围内的素数):
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 ]
但是,这并不能始终给我正确的素数。我认为我的索引已关闭,但我不确定如何/在哪里?