1
2
据我所知,问题12没有提到素数吗?这就是你要看的那个吗?
如果是这样,那么不考虑素数会有帮助吗?;) |
2
9
好吧,第二次尝试,因为我让事情变得太困难了。 答案如下: http://mathforum.org/library/drmath/view/57151.html
所以如果你知道基本因子,你只需要计算重复的因子,然后用上面的计算来计算因子的数量。 |
3
1
可能已经晚了3个月了,但现在… 我看到答案2有给你所需要的答案的功能,但是在回答你最初的问题时,假设你出于某种原因需要,你如何产生所有的因素,下面是你如何做到的: 假设数组中有因子: int[]素数=新int[]2、2、3、5、5 您需要做的是对每个可能的深度按顺序排列,然后将结果集减少到唯一的值。 我来解释一下我的意思: “有序排列”:假设从数组的0开始,下一个元素必须是1、2、3或4,如果从1开始,那么下一个元素必须是2、3或4,依此类推。 “每个可能的深度”:每个单独的因素,然后是任意两个因素,然后是任意三个因素,依此类推,直到你得到所有五个因素。 “减少集合”:如果你使用两个元素,比如0&3、0&4、1&3或1&4,它们都给你2*5=10,它们都提供了因子10,所以你需要将你的集合筛选为不同的值。(哎呀,这比我想象的要长……:) 实现这一点的方法是使用两种方法,一种是选择递归的最大深度,启动递归并将最终结果Winnow,另一种是递归值:
getAllFactors使用一个集合来确保我们只得到不同的值,然后将它们添加到一个列表中并进行排序,这样我们就可以按顺序显示这些因素。 当PermutaTimeFactors时,从零项(factor=1)到所有项(factor=1*2*2*3*5*5=300)生成。 希望有帮助。 |