gpt4 book ai didi

haskell - 在 Haskell 中制作除数列表

转载 作者:行者123 更新时间:2023-12-04 01:35:57 25 4
gpt4 key购买 nike

我在 eulerproject 中做问题 21。
一部分需要找到一个数字的正确除数列表。即 n 的剩余部分还有一些小于 n .所以我做了这个 Haskell,但是 GHCI 生我的气。

divisors n =[ n | n <- [1..(n-1)], n `rem` [1..(n-1)] ==0 ]

问题是我不知道如何制作:
n `rem` [1..(n-1)]

所以它只返回小于 n 的数字平均分为 n .

最佳答案

你只需要一个单独的变量。

Prelude> let divisors n = [x | x <- [1..(n-1)], n `rem` x == 0]
Prelude> divisors 20
[1,2,4,5,10]
Prelude> divisors 30
[1,2,3,5,6,10,15]

现在,如果你想让它更高效一点,我们已经知道除数不会超过 n 的一半。 ,我们知道 1 是所有事物的除数。而且,让我们继续让它更像 Haskell-y 启动,避免列表理解:
Prelude> let divisors n = 1 : filter ((==0) . rem n) [2 .. n `div` 2]
Prelude> divisors 20
[1,2,4,5,10]
Prelude> divisors 30
[1,2,3,5,6,10,15]
Prelude> divisors 31
[1]

关于haskell - 在 Haskell 中制作除数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1480563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com