当前位置:首页 > JavaScript

js实现完美数

2026-02-03 08:18:54JavaScript

完美数的定义

完美数是指一个正整数等于其所有真因数(不包括自身的因数)之和。例如,6的因数为1、2、3,且1 + 2 + 3 = 6,因此6是完美数。

判断完美数的算法

  1. 遍历所有可能的因数
    从1到n/2的范围内检查每个数是否能整除n,若能则将其加入因数列表。

  2. 计算因数之和
    将所有真因数相加,判断是否等于原数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,减少计算量:

js实现完美数

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

注意事项

  • 完美数较为罕见,已知的完美数均为偶数,奇完美数是否存在尚未被证明。
  • 对于极大数的判断,可能需要更高效的算法或数学理论支持。

标签: 完美js
分享给朋友:

相关文章

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…