请讨论我的Java代码以找出影响因素(是否正确?)

请讨论我的Java代码以找出影响因素(是否正确?),java,algorithm,Java,Algorithm,您有解决因子问题的其他解决方案吗?一些评论。首先,正如@OpenSource所指出的,这段代码不能正常工作。您可能应该通过忘记顶层的素数来简化您的方法。底漆不需要单独处理 关于特定代码行的一些注释: ArrayList<Integer> list = new ArrayList<Integer>(); 如果n自上次以来没有变化,为什么要重新计算n/2 if(n % i == 0) list.add(new Integer(i)); 如果i是一个因素,那么(n/i)也是

您有解决因子问题的其他解决方案吗?

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

关于特定代码行的一些注释:

ArrayList<Integer> list = new ArrayList<Integer>();
如果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);
}

在打印之前,您可能需要先对列表进行排序。

一些注释。首先,正如@OpenSource所指出的,这段代码不能正常工作。您可能应该通过忘记顶层的素数来简化您的方法。底漆不需要单独处理

关于特定代码行的一些注释:

ArrayList<Integer> list = new ArrayList<Integer>();
如果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);
}

在打印之前,您可能需要先对
列表进行排序。

如果这是您的作业,您应该在问题中添加作业标记。不,我用它来解决问题,但我会检查它是否正确。不,它不起作用:它认为35是质数。这几乎与您以前的问题()重复,如果您对其进行编辑,而不是发布新问题,则会更好。执行%3==0并不能证明某些内容是错误的odd@1eftHer0:修复错误的有趣方法;)。现在,它是否达到了您期望的输入49?这可能会持续一段时间。。。我开始怀疑我们被欺骗了……如果这是你的家庭作业,你应该在问题上加上家庭作业标签。不,我用它来解决问题,但我会检查它是否正确。不,它不起作用:它认为35是质数。这几乎与您以前的问题()重复,如果您对其进行编辑,而不是发布新问题,则会更好。执行%3==0并不能证明某些内容是错误的odd@1eftHer0:修复错误的有趣方法;)。现在,它是否达到了您期望的输入49?这可能会持续一段时间。。。我开始怀疑我们因为努力而被欺骗了…+1。我发现了一件事:小心这个例子
I==n/I
(不要在列表中添加两次相同的因子)。+1表示努力。我发现了一件事:当心案例
I==n/I
(不要在列表中添加两次相同的因子)。