偶数列表的哥德巴赫函数 [4..n]

Goldbach function for list of even numbers [4..n]

你好,我正在尝试为区间 [4..n] 创建一个函数 goldbach :: Integer -> Bool 只有当该区间中的所有元素都是偶数并且可以求和时才应该 return True来自两个素数。到目前为止我已经做到了。

goldbach::Integer->Bool
goldbach n 
    |goldbach2 n == ??? = goldbach (n-2)
    |n==4 = True
    |otherwise = False

goldbach2 :: Integer -> (Integer, Integer)
goldbach2 a = head $
                 filter (\(x,y) -> isPrime x && isPrime y) $
                 map (\e -> (e, a - e)) [3,5..a `div` 2]
where
factors a = filter (isFactor a) [2..a-1]
isFactor a b = a `mod` b == 0
isPrime a = null $ factors a

函数 golbach2 结果如下所示 goldbac2 28 = (5, 23)。如果 goldbach2 n 的结果正确并给了我两个原始数字,我应该如何检查我的第 3 行 goldbach2 n == ??? = goldbach (n-2)

如果我没理解错的话,你想要这样的东西:

 | let (n1, n2) = goldbach2 n in n == n1 + n2   =  goldbach (n-2)

我会这样写

goldbachInterval n = all goldbach [4,6 .. n]
   where
       goldbach k = .... -- property of being a golbach number