Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回给定n后的下一个素数的Haskell函数_Haskell - Fatal编程技术网

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

返回给定n后的下一个素数的Haskell函数,haskell,Haskell,学习哈斯克尔。正在尝试编写名为nexttime 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 isPr

学习哈斯克尔。正在尝试编写名为
nexttime 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]

我想我可能需要做一个while循环,但不确定如何做。我对函数式编程一无所知。感谢您的帮助

我假设
nextPrime n
的意思是“给我第一个大于n的素数”

这里有一个想法:

nextPrime :: Integral a => a -> a
nextPrime n = nextPrime' (n + 1)
 where nextPrime' m = ...
您想填写
nexttime'
的空格。这里有一个提示:

fun n = if n <= 0 
        then 0 
        else n + fun (n - 1)

fun=if n我假设
nexttime n
的意思是“给我第一个大于n的素数”

这里有一个想法:

nextPrime :: Integral a => a -> a
nextPrime n = nextPrime' (n + 1)
 where nextPrime' m = ...
您想填写
nexttime'
的空格。这里有一个提示:

fun n = if n <= 0 
        then 0 
        else n + fun (n - 1)

fun n=如果n查看并且也是一个选项^^^如果这是家庭作业,则应使用递归尝试此操作。作业的第一步应该是清楚地思考你要做什么,并声明:“如果n是prime,那么n之后的nextPrime就是n,否则它就是n+1之后的nextPrime”(这可能正是你所说的“n之后的nextPrime”的意思,也可能不是)。第二步是翻译成haskell,其中包括学习一些基本语法(提示:“is”变成
=
)。请参阅SO上haskell标记的信息部分以获取参考资料。我在n之后理解它的方式意味着,
nextPrime n>n
在任何情况下,SO
nextPrime n=n+1 IIF n+1是prime
@jberryman“nextPrime after n是n,如果n isPrime”n绝对不是在n之后,n之后的nextTime应始终以n+1开始搜索。查看并也是一个选项^^^如果这是家庭作业,则应使用递归尝试此操作。作业的第一步应该是清楚地思考你要做什么,并声明:“如果n是prime,那么n之后的nextPrime就是n,否则它就是n+1之后的nextPrime”(这可能正是你所说的“n之后的nextPrime”的意思,也可能不是)。第二步是翻译成haskell,其中包括学习一些基本语法(提示:“is”变成
=
)。请参阅SO上haskell标记的信息部分以获取参考资料。我对n之后的理解意味着,在任何情况下,SO
nextPrime n=n+1 IIF n+1是prime
@jberryman“nextPrime after n是n如果n isPrime”n绝对不是在n之后,nextPrime after n应该始终以n+1开始搜索。