相关疑难解决方法(0)

使用一组素数以升序生成整数

我有一组素数,我必须使用递增顺序的那些素因子生成整数.

例如,如果集合是p = {2,5}那么我的整数应该是1,2,4,5,8,10,16,20,25 ......

有没有有效的算法来解决这个问题?

algorithm primes hamming-numbers smooth-numbers

11
推荐指数
2
解决办法
4931
查看次数

O(N)速度和O(1)存储器的汉明数

免责声明:关于它有很多问题,但我没有找到任何需要恒定记忆的问题.

汉明数是一个数字2^i*3^j*5^k,其中i,j,k是自然数.

是否有可能在O(N)时间和O(1)(常数)存储器中产生第N个汉明数?在生成下我的意思是完全生成器,即你只能输出结果而不读取先前生成的数字(在这种情况下,内存将不是常量).但是你可以保存一些常数.

我看到只有具有常量内存的最佳算法并不比O(N log N)好,例如,基于优先级队列.但有没有数学证明在O(N)时间内构造算法是不可能的?

algorithm big-o time-complexity space-complexity hamming-numbers

6
推荐指数
1
解决办法
766
查看次数

有哪些方便的 Haskell 概念可以生成 2^m*3^n*5^l 形式的数字

我正在尝试生成 2^m*3^n*5^l 形式的数字,其中 m、n 和 l 是包括 0 的自然数。

顺序如下: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, ......

我正在通过获取百万分之一的数字来测试它。我使用列表理解和排序来实现它,但是花费的时间太长。我想要一个更快的解决方案。我花了好几天的时间尝试这样做,但没有成功。

我不想要一个完整的解决方案。我只是想知道实现它需要哪些 Haskell 概念。

haskell

6
推荐指数
2
解决办法
135
查看次数

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

我正在尝试生成可以用表格表示的所有倍数的列表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。

编辑:抱歉,看来我没有足够澄清这个问题。我想要的是一个有序的无限列表,虽然我可以对有限列表进行排序,但我觉得好像可能有一个更有效的解决方案。

haskell hamming-numbers smooth-numbers

5
推荐指数
1
解决办法
1858
查看次数

哈斯克尔汉明数字

我需要定义唯一素数因子为2,3和5的汉明数字列表.(即2 ^ i*3 ^ j*5 ^ k形式的数字.序列以1,2,3,4,5,6,8,9,10,12,15 ......开头)

我可以使用该factors功能或其他方式.在factors下面应该返回其参数的因素.我相信我已经正确实施了它.

   factors :: Int -> [Int]
   factors n = [x | x <- [1..(div n 2) ++ n], mod n x == 0]
Run Code Online (Sandbox Code Playgroud)

我试图使用列表推导来制作2 ^ i*3 ^ j*5 ^ k的列表但是仍然坚持写保护:

hamming :: [Int]
hamming = [n | n <- [1..], „where n is a member of helper“]

helper :: [Int]
helper = [2^i * 3^j * 5^k | i <- [0..], j <- [0..], k <- [0..]]
Run Code Online (Sandbox Code Playgroud)

haskell factors hamming-numbers

2
推荐指数
1
解决办法
2532
查看次数