0
因此,哥德巴赫猜想說每個大於2的正偶數都是兩個素數的總和。我想寫這將給出正偶數Haskell的程序,發現那些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 ]
但是,這並不總是給我正確的素數。我認爲我的索引已關閉,但我不確定如何/在哪裏?
什麼'primesR'的定義是什麼?舉一個輸入值(和輸出)的例子,這不是你所期望的。請注意,'x + y'將始終等於'n-1'。 – ErikR
@ErikR oops對不起,留下了這個定義。我編輯了這個問題! – user335129
我認爲這只是'y'的定義 - 是不是應該讓'let y = n-x'(IMO要你'x + y = n')? - 對於我來說,對我來說似乎沒問題,例如,'goldbach 16 =(3,13)'(例如,我看到ErikR基本上有同樣的說法 - 但好像OP沒有連接點或者我們都錯了) – Carsten