返回给定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
在任何情况下,SOnextPrime 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之后的理解意味着,在任何情况下,SOnextPrime n=n+1 IIF n+1是prime
@jberryman“nextPrime after n是n如果n isPrime”n绝对不是在n之后,nextPrime after n应该始终以n+1开始搜索。