学习Haskell。尝试编写一个名为nextPrime n
的函数,该函数将返回n
之后的下一个素数。
我有以下内容:
-- Generate a list of all factors of n
factors :: Integral a => a -> [a]
factors n = [x | x <- [1..n], n `mod` x == 0]
-- True iff n is prime
isPrime :: Integral a => a -> Bool
isPrime n = factors n == [1, n]
到目前为止,该功能设置如下:
nextPrime :: Integral a => a -> a
nextPrime n =
我认为我必须做一些while循环,但不知道如何。我对函数式编程完全陌生。任何帮助表示赞赏
答案 0 :(得分:2)
我认为nextPrime n
表示&#34;给我第一个比n&#34更高的素数。
这是一个想法:
nextPrime :: Integral a => a -> a
nextPrime n = nextPrime' (n + 1)
where nextPrime' m = ...
您想填写nextPrime'
的空白。这是一个暗示:
fun n = if n <= 0
then 0
else n + fun (n - 1)
这是一个计算总和1 + 2 + 3 + ... + n
的递归函数,但它从n
开始并从那里开始计算。 nextPrime'
必须上去。