題目
????將一個正整數(shù)分解質(zhì)因數(shù)贯涎。例:輸入90,打印出90=2*3*3*5。? ??
解題思路
? ??對n進(jìn)行分解質(zhì)因數(shù)哮伟,應(yīng)先找到一個最小的質(zhì)數(shù)k晒奕,然后按下述步驟完成:如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束唆鸡,打印出即可涝影。如果n>k,但n能被k整除争占,則應(yīng)打印出k的值燃逻,并用n除以k的商,作為新的正整數(shù)你n臂痕,重復(fù)執(zhí)行第一步伯襟。如果n不能被k整除,則用k+1作為k的值握童,重復(fù)執(zhí)行第一步姆怪。
JavaScript
// test func
//?將給出的值與獲得結(jié)果的數(shù)組的乘積進(jìn)行對比
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
}
// 算法函數(shù)
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
}
// 運(yùn)行
console.log(testFuc(90, func(90)))
參考鏈接:
? ??http://www.manonggu.com/suancheng/view1101.html