【发布时间】:2015-11-30 06:33:34
【问题描述】:
我正在尝试解决一个更大的算法的子问题,我真的在努力解决这个问题!
问题
如果我有一个数字数组(比如 A),我如何有效地列出所有可以通过将数字相乘得到的数字(可以根据需要使用多次) 并且小于另一个数字(比如 x)。
例如,假设我有 A = [7, 11, 13] 并且 x 是 1010,答案将是:
- 7 = 7
- 11 = 11
- 13 = 13
- 7*7 = 49
- 7*11 = 77
- 7*13 = 91
- 11*11 = 121
- 11*13 = 143
- 13*13 = 169
- 7*7*7 = 343
- 7*7*11 = 539
- 7*7*13 = 637
- 7*11*11 = 847
- 7*11*13 = 1001
我已尽力不遗漏任何内容(但如果有,请随时编辑)!
我可以看出这可能是某种类型的递归,但我真的在这方面苦苦挣扎!
可选
一个天真的解决方案也很好(这就是我正在苦苦挣扎的地方)。
运行时间也是可选的。
更新
A中的所有数都是从eratosthenes筛中得到的所有素数(1、2、3、5除外)。
更新 2
A也已排序
更新 3 A中的所有数字都在限制范围内
更新 4 解决方案不需要递归。那只是我的一个想法。 Java 或伪代码更可取!
【问题讨论】:
-
是否所有数字都像您的示例中的素数一样,或者是否允许复合?
-
是的,数字是质数(除了 1、2、3、5)。我使用 eratosthenes 筛来获得所有素数。
-
您的数组是否包含 ALL 个低于限制的素数(此处限制为 1010)?
-
是的,低于限制
标签: algorithm recursion primes prime-factoring number-theory