题解 | #完全数计算#

完全数计算

https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

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

// 是否是完全数
function fn(num) {
    const set = new Set()
    // num / 2 是因为约数不可能比 num/2 还要大
    for (let i = 0; i <= num / 2; i += 1) {
        // 这是个约数,加入 set
        if (num % i === 0) {
            set.add(i)
        }
    }
    return [...set].reduce((pre, cur) => pre + cur) === num
}

void async function () {
    let res = 0
    // Write your code here
    while(line = await readline()){
        // 第一个完全数是 6
        for (let i = 6; i <= line; i += 1) {
            if (fn(i)) {
                // 计数,如果 i 是完全数,计数 + 1
                res += 1
            }
        }
    }
    console.log(res)
}()

全部评论

相关推荐

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