【发布时间】:2013-02-13 20:53:57
【问题描述】:
打印正整数因子的所有唯一组合的最有效算法是什么。例如,如果给定的数字是 24,那么输出应该是
24*1
12*2
8*3
6*4
6*2*2
4*3*2
3*2*2*2
请注意,当打印 6*4 时,不会打印 4*6。所以基本上这是一个在不考虑顺序的情况下获取唯一子集的问题(一种看待问题的方法)。但目标是拥有一个运行速度最快的函数,因此将因子存储在数据结构中以进行进一步操作可能会消耗更多时间。我已经尝试了我的算法并在下面粘贴了我的代码,但它似乎没有给我想要的结果,我在递归调用中犯了一些错误。你能帮我找出一个有效的方法来做到这一点吗?
public static void printfact(int num){
int temp=0;
for(int i=num-1;i>=num/2;i--){
if(num % i == 0){
temp = num/i;
System.out.println(temp + " * " + i);
if(isprime(i)==false){
System.out.print(temp + " * ");
printfact(i);
}
}
}
}
【问题讨论】:
-
感谢 Sanjeev 的问题编辑建议
-
我认为你需要:en.wikipedia.org/wiki/…找到所有因素后。
-
6 和 4 都不是 24(或任何其他数字)的质因数,因为它们不是,嗯...质数。
-
@Aubin 这是正确的标题,它不是关于打印主要因素,而是所有因素的组合。看看我给出的例子。
标签: java algorithm recursion time-complexity factors