Welcome 微信登录

首页 / 软件开发 / JAVA / Java小例子:分解质因数

Java小例子:分解质因数2011-04-05 csdn博客 捏造的信仰这个例子演示如何利用递归来完成分解质因数。

import java.util.List;

import java.util.ArrayList;

/**

* 分解质因数

*/

public class GetFactor {

public static void main(String[] args) {

List<Long> factors = getFactors(5555566666L, 2);

System.out.println(factors);

}

/**

* 通过递归实现分解质因数

*

* @param n 要分解的数字

* @param factor 起始因子

*

* @return 分解结果

*/

private static List<Long> getFactors(long n, long factor) {

// 不断增大 factor 直到能整除n

while (n % factor != 0 && factor < n) {

// 得到 2,3,5,7,9,11,13,...

factor = factor < 2 ? 2 : factor == 2 ? 3 : factor + 2;

}

List<Long> result;

if (factor >= n) { // 因子已经涨到和 n 一样大,说 明 n 本身就是因子。这时递归完成。

result = new ArrayList<Long>();

} else { // 因子能够整除 n,于是继 续分解除以因子后的结果

result = getFactors(n / factor, factor); // 向 下递归

}

result.add(factor);

return result;

}

}