【发布时间】:2019-05-28 06:25:34
【问题描述】:
最近我遇到了这个问题,无法找到最佳解决方案。
假设我们有一个任意范围的数字数组,例如 9,-3,0,4,11,2,-8,.....
我们需要打印从 2 到 100 的数字,并且对应于它们中的每一个,我们需要从数组中打印一个数字列表,以便数组中的数字可以被它整除。
例子:
使用示例中的现有数组,
2 -> 4,2,-8,...
3 -> -3,9,...
4 -> 4,-8,...
像这样最多 100 个。
我尝试通过将数组的每个数字除以 2 到 100 的数字来计算解决方案,然后创建与每个数字对应的列表。但这在我看来并不是最佳解决方案。
我什至尝试对数字进行分组,例如可以被 8 整除的数字将被 2 和 4 整除,因此我们不需要再次将其除。这将减少一些操作和复杂性,但反过来又需要创建这样的组。
请任何人通过减少将每个数字除以 2 到 100 的需要来帮助找到该问题的最佳解决方案。
【问题讨论】:
-
您能否通过提供minimal reproducible example 来展示您的作品?另外...查看更多规则或示例会很有帮助。
-
如果列表中有两个相等的数字,我们需要做什么? 1) 显示一次 2) 在列表中显示多少次?在我看来,最佳解决方案就像使用素数分解。
-
问题也是关于组中项目的顺序。按照原列表中的顺序显示就够了吗?
-
@SergeyProsin 我们可以假设数组已经包含不同的元素。请你解释一下如何推进素数分解?顺序也不重要。我们只需要生成列表。
-
@Sometowngeek 我现在没有任何代码。但我可以举一些例子。示例
array[] = {3,5,1,-7,6,34,88,2,-8,9,10,4,33}那么输出应该是:2 -> 6,34,88,2,-8,10,43->3,6,9,334->88,-8,45->5,10并且类似地直到 100。