请讨论我的Java代码以找到因素(它是正确的吗?)

时间:2011-07-21 10:38:26

标签: java algorithm

你有解决因子问题的另一种解决方案吗?

1 个答案:

答案 0 :(得分:5)

一些评论。首先,正如@OpenSource所指出的,这段代码无法正常工作。你应该通过忘记顶层的素数来简化你的方法。 Primes不需要单独处理。

对特定代码行的一些评论:

ArrayList<Integer> list = new ArrayList<Integer>();

此时你知道有两个因素,1和n。为什么不立即将它们添加到列表中?

if(i > n/2) break; //optimize

如果自上次以来n没有改变,为什么要重新计算n/2

if(n % i == 0) list.add(new Integer(i));

如果i是一个因素,那么(n / i)也是一个因素。每次获得n % i == 0时,您都会发现两个因素。

}else if(n%3 == 0 && n%2 != 0 && n != 3 && n != 1){   //odd number

这不起作用,并且需要付出太多努力。你已经看过偶数,剩下的必须是奇数。

}else{ //prime

不,剩下的不是素数。而且还有一个偶数素数。

for(int a:list){
    System.out.println(a);
}

您可能希望在打印之前先排序list