如何找到仅是 2、3 和 5 的幂的倍数的所有数字的列表?

rob*_*bie 5 haskell hamming-numbers smooth-numbers

我正在尝试生成可以用表格表示的所有倍数的列表2^a*3^b*5^c,其中 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。