算法题目-正整数分解质因数

2018-03-02  本文已影响0人  MacXin

题目

    将一个正整数分解质因数。例:输入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

上一篇 下一篇

猜你喜欢

热点阅读