题解 | #质数因子#

质数因子

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必然是质数。

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

练练练练练

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务