Problem: HJ6 质数因子
题目描述
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) 数据范围:
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:
180
输出:2 2 3 3 5
算法流程
- 定义一个空数组
factors,用于存储质因子。- 使用一个循环从 2 开始遍历到输入的正整数
num。- 在循环中,判断
num是否能被当前的数整除,如果可以整除,则将该数作为质因子,并将其添加到factors数组中。- 将
num更新为num除以当前的数,继续判断是否能被当前的数整除,直到不能整除为止。- 最后,如果
num大于 1,则将其作为质因子,并添加到factors数组中。- 输出
factors数组中的元素,即为按照从小到大的顺序输出的所有质因子。
代码
function getPrimeFactors(num) {
let factors = [];
for (let i = 2; i <= num; i++) {
while (num % i === 0) {
factors.push(i);
num /= i;
}
}
return factors;
}