# Problem 40

Goldbach's conjecture says that every positive even integer greater than 2 is the sum of two prime numbers. Example: 28 = 5 + 23. It has been numerically confirmed up to very large numbers but remains unproven.

Return two prime numbers that sum up to a given even integer.

## Example

``````goldbach 100 == (29, 71)
``````

## Unit Test

``````import Html
import List
import Maybe

goldbach : Int -> Maybe (Int, Int)
goldbach n =
Nothing

main =
Html.text
(if (test) then
else
"Your implementation failed at least one test."
)

test : Bool
test =
List.all (\n -> testGoldbach n <| goldbach n)
[ 4, 10, 12, 14, 16, 18, 20, 100, 222, 120, 2444, 24444, 33336, 71000 ]
&& List.all (\n -> (goldbach n) == Nothing) [-99999, -1, 0, 1, 99, 9999]

testGoldbach : Int -> Maybe (Int, Int) -> Bool
testGoldbach n result =
case result of
Nothing -> False

Just (p1, p2) ->
if n < 3 && result /= Nothing then
False
else if isOdd n then
False
else if p1 + p2 /= n then
False
else if not (isPrime p1) || not (isPrime p2) then
False
else
True

-- The core library function Arithmetic.isOdd is not available
-- on elm-lang.org/try, so we'll recreate it here
isOdd : Int -> Bool
isOdd n =
n % 2 /= 0

isPrime : Int -> Bool
isPrime n =
if n < 2 then
False
else
List.member n <| primesInRange 2 n
``````

Solutions