HJ56 完全数计算

题目:

HJ56 完全数计算

题解:

1.求出每个数的所有约数,判断是否为完全数。

2.循环1- ,如果能整除即为约数(约数至少两位,i*i = n,所以i的最大值为)。

java 复制代码
    public int getPerfectNumber(int n) {
        int count = 0;
        for (int i = 1; i <= n; i++) {
            if (isPerfectNumber(i)) {
                count++;
            }
        }

        return count;
    }

    private boolean isPerfectNumber(int n) {
        if (n <= 1) {
            return false;
        }

        int sum = 0;
        for (int i = 1; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                sum = sum + i + n/i;
            }
        }

        return sum == 2*n;
    }

时间复杂度:O(N)

相关推荐
workflower1 小时前
数据结构练习题和答案
数据结构·算法·链表·线性回归
一个不喜欢and不会代码的码农1 小时前
力扣105:从先序和中序序列构造二叉树
数据结构·算法·leetcode
AI+程序员在路上1 小时前
鸿蒙系统(HarmonyOS)介绍
华为·harmonyos
lqj_本人2 小时前
鸿蒙next版开发:相机开发-录像(ArkTS)
数码相机·华为·harmonyos
23zhgjx-NanKon3 小时前
华为eNSP:MSTP
华为
No0d1es3 小时前
2024年9月青少年软件编程(C语言/C++)等级考试试卷(九级)
c语言·数据结构·c++·算法·青少年编程·电子学会
bingw01143 小时前
华为机试HJ42 学英语
数据结构·算法·华为
Swift社区4 小时前
HarmonyOS 如何获取设备信息(系统、版本、网络连接状态)
华为·harmonyos
Yanna_1234564 小时前
数据结构小项目
数据结构
木辛木辛子5 小时前
L2-2 十二进制字符串转换成十进制整数
c语言·开发语言·数据结构·c++·算法