rob*_*bie 5 haskell hamming-numbers smooth-numbers
我正在尝试生成可以用表格表示的所有倍数的列表,其中 a、b 和 c 是整数。我尝试了以下方法,
[ a * b * c | a <- map (2^) [0..], b <- map (3^) [0..], c <- map (5^) [0..] ]
Run Code Online (Sandbox Code Playgroud)
但它只列出了 5 的幂,而从未列出 2 或 3。
编辑:抱歉,看来我没有足够澄清这个问题。我想要的是一个有序的无限列表,虽然我可以对有限列表进行排序,但我觉得好像可能有一个更有效的解决方案。
小智 4
之所以只有 5 的幂,是因为 Haskell 尝试评估每个可能的 c,以获得 a = 2^0 和 b = 3^0,并且只有当完成后,它才会得出 a = 2^0 和 b = 3^1 。所以这样你只能构造一个有限列表,如下所示:
[ a * b * c | a <- map (2^) [0..n], b <- map (3^) [0..n], c <- map (5^) [0..n] ]
对于给定的 n。