我有一组素数,我必须使用递增顺序的那些素因子生成整数.
例如,如果集合是p = {2,5}那么我的整数应该是1,2,4,5,8,10,16,20,25 ......
有没有有效的算法来解决这个问题?
免责声明:关于它有很多问题,但我没有找到任何需要恒定记忆的问题.
汉明数是一个数字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
我正在尝试生成 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 概念。
我正在尝试生成可以用表格表示的所有倍数的列表,其中 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。
编辑:抱歉,看来我没有足够澄清这个问题。我想要的是一个有序的无限列表,虽然我可以对有限列表进行排序,但我觉得好像可能有一个更有效的解决方案。
我需要定义唯一素数因子为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)