当前位置:首页 > 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,减少计算量:

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
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEv…