将一个整数分解为若干质因数之乘积
样例
给出 10
, 返回 [2, 5]
.
给出 660
, 返回 [2, 2, 3, 5, 11]
.
注意事项
你需要从小到大排列质因子。
解题思路:
i从2 开始算起 当i ^ 2超过n时 就不需要再考虑后面的数
只要n % i == 0 可以整除 就一直while循环 直至终止 该过程中 不断缩小n 并将结果加入到res中
最后不要忘记最终得到的结果 (if num>1) 也加入进去
public class Solution {
/**
* @param num: An integer
* @return: an integer array
*/
public List<Integer> primeFactorization(int num) {
// write your code here
List<Integer> res=new ArrayList<>();
if(num<2) {return res;}
for(int i=2;i*i<=num;i++) {
while(num%i==0) {
res.add(i);
num/=i;
}
}
if(num != 1)
res.add(num);
return res;
}
}