LeetCode Daily 2
2021-12-31
LeetCode T507
希望自己在新的一年里可以继续坚持刷题的习惯??!
题目描述:
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。 给定一个 整数 n, 如果是完美数,返回 true,否则返回 false。
Input:
num = 28
Output:
true 解释:28 = 1 + 2 + 4 + 7 + 14 1, 2, 4, 7, 和 14 是 28 的所有正因子。
解法:
若是满足题意的数字,那必然不是质数!
随后则逐个判断即可!
class Solution { public: bool checkPerfectNumber(int num) { if(num == 1) return false; if(isPrime(num)) return false; int sum = 1; for(int i = 2; i < num / i; i++) {//避免成对出现的因子!这里不采用sqrt判断是因为sqrt内存消耗更多! if(num % i == 0) { sum += i + num / i; } } if(sum == num) return true; return false; } bool isPrime(int n) { if(n == 2) return true; for(int i = 2; i < sqrt(n); i++) { if(n % i == 0) return false; } return true; } };
还有卡测试用例的骚方法 ??(图一乐)
class Solution { public boolean checkPerfectNumber(int num) { switch(num) { case 6: case 28: case 496: case 8128: case 33550336: return true; } return false; } }