题目
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )输入描述:
输入一个整数输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。示例1
输入:180
输出:2 2 3 3 5
思路
从2开始枚举,只要整除就放入数组;
找到一个质数,就做除法,把这个数逐渐缩小;
以上两步相当于把质因素从数字中移到了数组中;
从2开始,每次+1开始试,最小能整除的必然是质数;(这个要脑补一下)
i * i <= num 这个退出条件要脑补一下
// 输入字符串转数字
let num = parseInt(readline());
let arr = [] // 结果数组
// 主要是要明确指数因子的范围
// 小于等于本身,小于等于本身的开方
let i = 2;
while(i <= num && i * i <= num) { // 没有这个判断超时 i * i <= num
// 每次都从2开始枚举
if (num % i === 0) {
arr.push(i)
num /= i
i = 2
} else {
i++
}
}
// 最后一个数
if (num != 1) {
arr.push(num)
}
// 数组转字符串输入,用空格隔开
console.log(arr.join(' '))