507. 完美数
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。
给定一个 整数 n, 如果是完美数,返回 true,否则返回 false
2021年的收官之题
提前预祝各位小伙伴们新年快乐
两种方式 不过都很暴力
一种是直接像下面这样 遍历正因子累加 然后判断是否相等
需要注意只需要累加到根号num就行了 因为正因子是成对出现的
还有就是1需要直接排除
第二种就是打表
目前已知的能找到的完美数只有五个
6,28,496,8128,33550336
public class Solution { public bool CheckPerfectNumber(int num) { if(num <= 1) { return false; } int sum = 1; for (int d = 2; d * d <= num; d++) { if (num % d == 0) { sum += d; if (d * d < num) { sum += num / d; } //因为正因子必然是成对出现的 //如果后面的也累加就重复了 //所以只要累加到sqrt(num) } } return sum == num; } }