题解 | #质数因子#

质数因子

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

1. 什么是质数

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

2. 为什么只需要遍历到n\sqrt{n}即可

假设我们需要寻找nn的质数,当我们找到某个质数xx的时候,那么一定存在另一个数yy,有n=xyn = x * y。也就是说,会有一个数xnx \leq \sqrt{n},另一个数yny \ge \sqrt{n}。如果x,y<nx,y < \sqrt{n}则乘积m<nm < n,如果x,y>nx,y > \sqrt{n}则有乘积m>nm > n,所以我们只需要遍历到n\sqrt{n}即可。

3. JavaScript代码实现

function main() {
    let num = parseInt(readline())
    let res = '', k = Math.sqrt(num)
    for(let i = 2 ; i <= k ; i++) {
        while(num % i === 0) {
            res += i + ' '
            num = Math.floor(num / i)
        }
    }
    // 如果num最后不是1,则说明此时num也是一个质数,需要添加到最后
    if(num !== 1) {
        res += num
    }
    console.log(res)
}

main()
全部评论
Math.floor 这里是起什么作用哩
点赞 回复 分享
发布于 03-20 00:16 陕西

相关推荐

不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
9
2
分享
牛客网
牛客企业服务