题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){        
        let tokens = parseInt(line.split(' '));
	  
        //定义一个判断质数的方法
        function isPrime(num){
            let isp = true;
            let sqrt = Math.sqrt(num);//sqrt() 方法可返回一个数的平方根。
            if(num == 1) isp =false
            for(let i = 2; i <= sqrt; i++){
                // isp=(num%i===0?false:true);
                if(num%i===0){
                    isp=false;
                    break;
                }
            }
            return isp;
        }
        //做除法
        let getarr=[];
        for(let i = 2; i < tokens; i++){
            if(isPrime(i)){
                while(tokens%i===0){
                    getarr.push(i);
                    tokens=tokens/i;
                }
                if(isPrime(tokens)){
                    getarr.push(tokens);
                    break;
                }
            }
        }
        
        console.log(getarr.join(' '));
    }
}()

我的方法

函数封装

while中的tokens改变后仍然符合while的判断条件时可以循环

根据质数只的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可。但我们有更好的办法。先找一个数m,使m的平方大于n,再用<=m的质数去除n (n即为被除数)如果都不能整除,则n必然是质数。

练练练练练 文章被收录于专栏

练练练练练

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务