**首先了解一下分解质因数的算法就是将一个合数拆分成若干个素数的乘积,例如20=225;15=3*5;
本算法思想:用一个数组来保存拆分下来的素数
(1):从最小的素数2开始拆分,如果2是他的因数,则将数组长度+1,将拆分的两个因数小数在数组的前端,大数在数组的后端,若2不是他的因数,则2自增后再进行判断
** 如:
(2):拆分好后对数组后端的大数进行判断,判断是否为素数,若不是素数则继续对其进行(1),如若其为素数,则拆分完毕
**如:
const readline = require('readline-sync')
var a = readline.question();
//从键盘上输入一个合数保存到a当中
var b=[a]; //存放素数的数组
function heshu(count){ //用于判断count是否为合数
for(var i=2;i<=count/2;i++)
{
if(count%i==0)
{
return true;
break;
}
}
if(i>count/2)
return false;
}//若是则返回true,否则返回false
for(var j=0;j<=b.length-1;j++){//j用于保存拆分下来的数到数组中
if(heshu(b[b.length-1])){ //如果b的最后一位为合数,继续分解
for(var i=b[b.length-1]-1;i>=2;i--){
if(b[b.length-1]%i==0){
b[b.length-1]=b[b.length-1]/i; //将分解的素数保存再数组的前端
b.length++;//数组位数+1
b[b.length-1]=i;//数组的最后保存可能再分的大数
break;
}
}
}
}
console.log(b);//输出合数a拆分后的数组b