题目
将一个正整数分解质因数。例:输入90,打印出90=2*3*3*5。
解题思路
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
JavaScript
// test func
// 将给出的值与获得结果的数组的乘积进行对比
function testFuc(n, arr){
let flag = true
if(!Array.isArray(arr) || arr.length == 0){
flag = false
return flag
}
let arrPro = arr.reduce((pre, cur) => pre*cur)
if(n != arrPro){
flag = false
}
return flag
}
// 算法函数
function func(n){
let results = []
for(let i=2; i<= n; i++){
while(n != i){
if(n % i == 0){
results.push(i)
n = n/i
} else {
break;
}
}
if(i == n){
results.push(i)
}
}
return results
}
// 运行
console.log(testFuc(90, func(90)))
参考链接:
http://www.manonggu.com/suancheng/view1101.html