【简单】算法nodeJs:完全数计算

126 阅读1分钟

描述

完全数,又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)之和恰好等于它本身。

现在,你需要计算 1 到 n 之间完全数的个数。

输入描述:

输入一个整数 n(1≦n≦5×10的5次)

输出描述:

输出一个整数,代表区间内完全数的个数。

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 = parseInt(await readline()))) {
        if (line < 6) return console.log(0);
        let sum = 0;
        for (let i = 6; i <= line; i++) {
            const temp = [];
            for (let j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) temp.push(j, i / j);
            }
            if (eval(temp.join("+")) == i - 1) sum++;
        }
        console.log(sum);
    }
})();