力扣每日一题之完美数
对于一个正整数,如果除了它和它自身以外的所有正因子相等,我们称他为完美数。
给定一个整数,如果是完美数,返回true,否则返回false
示例 1:
输入:num = 28 输出:true 解释:28 = 1 + 2 + 4 + 7 + 14 1, 2, 4, 7, 和 14 是 28 的所有正因子。
示例 2:
输入:num = 6 输出:true
示例 3:
输入:num = 496 输出:true
方法一:枚举
枚举num
的所有真因子,累加所有真因子之和,记作sum。若sum=num则返回true,否则返回false.
在枚举时,只需要枚举不超过$ \(的数。这是因为如果\)num\(有一个大于\) \(的因数\)d\(,那么它一定有一个小于\) $的因数 \(frac{num}{d}\).
在枚举时,若能找到一个因数\(d\),那么就找到了因数\(frac{num}{d}\).
当\(d \\times d=num\)时,这两个因数相同,此时不能重复计算。
1 | func checkPerfectNumber(num int) bool { |