This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
你有其他解决因素问题的方法吗?

最佳答案

一些评论。首先,正如@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/

10-12 14:13