js实现完美数
完美数的定义
完美数是指一个正整数等于其所有真因数(不包括自身的因数)之和。例如,6的因数为1、2、3,且1 + 2 + 3 = 6,因此6是完美数。
判断完美数的算法
-
遍历所有可能的因数
从1到n/2的范围内检查每个数是否能整除n,若能则将其加入因数列表。 -
计算因数之和
将所有真因数相加,判断是否等于原数n。
JavaScript实现代码
function isPerfectNumber(n) {
if (n <= 1) return false; // 完美数必须大于1
let sum = 0;
for (let i = 1; i <= n / 2; i++) {
if (n % i === 0) {
sum += i;
}
}
return sum === n;
}
优化方法
对于较大的数,可以优化因数的遍历范围到√n,减少计算量:
function isPerfectNumberOptimized(n) {
if (n <= 1) return false;
let sum = 1; // 1是所有数的因数
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
sum += i;
if (i !== n / i) sum += n / i; // 避免重复添加平方数
}
}
return sum === n;
}
示例测试
console.log(isPerfectNumber(6)); // true
console.log(isPerfectNumber(28)); // true
console.log(isPerfectNumber(12)); // false
注意事项
- 完美数较为罕见,已知的完美数均为偶数,奇完美数是否存在尚未被证明。
- 对于极大数的判断,可能需要更高效的算法或数学理论支持。







