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

题目

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,782评论 0 89
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,922评论 0 2
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,867评论 0 6
  • 我万万没有想到。 21天的挑战,我竟然, 成 功 了! 我真的要给自己一个大大的赞! 当然,给自己赞之前,我真的要...
    泋小溪阅读 825评论 3 5
  • 每个女人都在追求幸福。 但是什么是真正的幸福呢?幸福的密码在哪里呢? 一、比出来的幸福是注定不长久的 范伟有一个经...
    无思想不未来阅读 436评论 0 2