给定n后返回下一个素数的Haskell函数

时间:2016-03-04 21:15:23

标签: haskell

学习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循环,但不知道如何。我对函数式编程完全陌生。任何帮助表示赞赏

1 个答案:

答案 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'必须上去。