nodejs实现分解质因数的算法

**首先了解一下分解质因数的算法就是将一个合数拆分成若干个素数的乘积,例如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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值