java - 请讨论我的 Java 代码以找到因素(是否正确?)

标签 java algorithm

<分区>

你有其他解决因子问题的方法吗?

最佳答案

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

相关文章:

java - 在过时的操作系统上部署 JavaFX 应用程序

java - 如果 ProGuard 中存在注释,则构建失败

java - 使用 itext 重新排序 PDF 页面

algorithm - 如何解决这个递推关系

java - 在 DB2 中创建表查询

java - 如何将 Location 对象放入 Parcelable

Javascript - 如何在每次调用后跟随功能并改变它们的用途?

algorithm - 在 GPU 上绘制二次曲线

python - 带条件的最短路径图搜索

c - 有没有同时使用堆栈和队列(双端队列)ADT 的有趣算法?