507 完美数(暴力枚举)

- 日理万妓 2022-08-29 15:58 299阅读 0赞

1. 问题描述:

对于一个正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为 「完美数」。给定一个整数 n, 如果是完美数,返回 true,否则返回 false

示例 1:
输入:28
输出:True
解释:28 = 1 + 2 + 4 + 7 + 14
1, 2, 4, 7, 和 14 是 28 的所有正因子。

示例 2:
输入:num = 6
输出:true

示例 3:
输入:num = 496
输出:true

示例 4:
输入:num = 8128
输出:true

示例 5:
输入:num = 2
输出:false
提示:
1 <= num <= 10 ^ 8
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/perfect-number

2. 思路分析:

分析题目可以知道我们暴力枚举num的所有因数即可,因为因数都是成对出现的所以我们只需要枚举一半即可,d为num的因数,那么num / d也为num的因数,若d为较小的因数那么d <= num / d,也即d * d <= num,所以我们枚举到根号num即可。num最大为10 * 8所以时间复杂度为10 * 4左右。

3. 代码如下:

  1. class Solution:
  2. def checkPerfectNumber(self, num: int) -> bool:
  3. i = 1
  4. s = 0
  5. while i * i <= num:
  6. if num % i == 0:
  7. # 只有当当前的i<num的时候说明才是满足条件的
  8. if i < num:
  9. s += i
  10. if i != num // i and num // i < num:
  11. s += num // i
  12. i += 1
  13. return s == num

发表评论

表情:
评论列表 (有 0 条评论,299人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java实现 LeetCode 507 完美

    507. 完美数 对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。 给定一个 整数 n, 如果他是完美数,返回 True,否则返回

    相关 ACM.暴力

    \有一类问题可以采用一种盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的,保留那些符合要求的,这种方法叫枚举算法

    相关 507 完美暴力

    1. 问题描述: 对于一个正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为 「完美数」。给定一个整数 n, 如果是完美数,返回 true,否则返回 false

    相关 暴力

    Problem Description 小埋今天出门准备买一堆漫画书回来,书的套餐类型有 3 种,第一种书是单本的,第二种书是两本捆在一起的,第三种是三本书捆在一起的。每