我目前正在努力尋找 Haskell 范圍之間的素數數量。該程式正確列印出素數的范圍。例如 countPrimesUntil 2 10 將列印出 [2, 3, 5, 7]。我正在尋找數字 4,因為這是 2 到 10 之間的素數。如何正確合并 countPrimes?
import Data.List
countPrimesUntil :: Integral a=> a -> a -> [a]
countPrimesUntil a b = takeWhile (<= b) $ dropWhile (< a) $ sieve [2..]
while sieve (n:ns) = n:sieve [m | m <- ns, m `mod` n /= 0]
countPrimes n = length([x | x <- [2..n], countPrimesUntil x])
uj5u.com熱心網友回復:
countPrimesUntil被錯誤命名;它不算什么。相反,它會生成a和之間的素數串列b,包括在內。
您需要做的就是在給定引數和時應用length到 的結果。countPrimesUntil2n
countPrimes n = length (countPrimesUntil 2 n)
-- countPrimes = length . countPrimesUntil 2
uj5u.com熱心網友回復:
在這種情況下,countPrimes呼叫countPrimesUntil 2 n, 并確定它的長度,因此:
countPrimes n = length (countPrimesUntil 2 n)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374155.html
下一篇:在串列的各個元素上運行函式串列
