领扣LintCode算法问题答案-235. 分解质因数

领扣LintCode算法问题答案-235. 分解质因数

目录

  • 235. 分解质因数
  • 鸣谢

235. 分解质因数

将一个整数分解为若干质因数之乘积。

你需要从小到大排列质因子。

样例 1:

输入:10
输出:[2, 5]

样例 2:

输入:660
输出:[2, 2, 3, 5, 11]

public class Solution {
     
    /**
     * @param num: An integer
     * @return: an integer array
     */
    public List<Integer> primeFactorization(int num) {
     
        // write your code here
        List<Integer> ret = new ArrayList<>();
        if (num <= 3) {
     
            ret.add(num);
        } else {
     
            int max = (int) Math.sqrt(num);
            for (int i = 2; i <= max; i++) {
     
                boolean has = false;
                while (num % i == 0) {
     
                    num /= i;
                    ret.add(i);
                    has = true;
                }
                if (has) {
     
                    max = (int) Math.sqrt(num);
                }
            }
            if (num > 1) {
     
                ret.add(num);
            }
        }

        return ret;
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

你可能感兴趣的:(算法,算法)