<分区>
你有其他解决因子问题的方法吗?
<分区>
你有其他解决因子问题的方法吗?
最佳答案
一些评论。首先,正如@OpenSource 指出的那样,这段代码无法正常工作。您可能应该通过忘记顶层的质数来简化您的方法。质数不需要单独处理。
具体代码行的一些注释:
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
进行排序。
关于java - 请讨论我的 Java 代码以找到因素(是否正确?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774721/