用Java设计一个方法factor(),将num因式分解,并将其因子封装到列表集合后返回
时间: 2023-06-19 16:06:11 浏览: 88
下面是一个可能的实现,使用了传统的因式分解算法:
```java
import java.util.ArrayList;
import java.util.List;
public class Factorization {
public static List<Integer> factor(int num) {
List<Integer> factors = new ArrayList<>();
for (int i = 2; i <= num / i; i++) {
while (num % i == 0) {
factors.add(i);
num /= i;
}
}
if (num > 1) {
factors.add(num);
}
return factors;
}
public static void main(String[] args) {
int num = 60;
List<Integer> factors = factor(num);
System.out.printf("The factors of %d are: %s%n", num, factors);
}
}
```
该实现接受一个整数 `num`,并返回一个列表 `factors`,其中包含了 `num` 的所有因子。该算法首先从 2 开始,逐个尝试每个可能的因子 `i`,如果 `num` 能够被 `i` 整除,则将 `i` 加入到 `factors` 中,同时将 `num` 除以 `i` 的结果作为新的 `num`,继续尝试下一个 `i`。这样可以保证每个因子都被找到,并且不会重复。最后,如果 `num` 不为 1,则说明还有一个大于 $\sqrt{num}$ 的因子,也将其加入到 `factors` 中。
阅读全文