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)

相关推荐
小兔崽子去哪了24 分钟前
华为 IODT 设备接入
java·华为
.柒宇.35 分钟前
力扣hot100之最大子数组和(Java版)
数据结构·算法·leetcode
梁山好汉(Ls_man)36 分钟前
鸿蒙_使用DevEco Studio预览器
华为·harmonyos·arkui·预览器
美式请加冰1 小时前
子序列问题
数据结构·算法·leetcode
不才小强2 小时前
查找算法详解:二分查找
数据结构·算法
Peregrine92 小时前
数据结构 -> 顺序表
数据结构
HMS Core2 小时前
化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量
华为·harmonyos
动恰客流管家2 小时前
动恰3DV3客流统计方案:赋能智慧公厕精细化运营
数据结构·人工智能·3d
XWalnut3 小时前
LeetCode刷题 day10
数据结构·算法·leetcode
见山是山-见水是水3 小时前
鸿蒙flutter第三方库适配 - 动态工作流
flutter·华为·harmonyos