1. 完美数
对这个题目来说可以使用暴力打表
class Solution {
public:
bool checkPerfectNumber(int num) {
if (num == 1) return false;
int s = 0;
for (int i = 1; i < num / i; i ++ )
{
if (num % i == 0)
{
s += i;
s += num / i;
}
}
s -= num; // 因子是1时, 需要减去自己本身
cout << s;
return s == num;
}
};
class Solution {
public:
bool checkPerfectNumber(int num) {
if (num == 6 || num == 28 || num == 496 || num == 8128 || num == 33550336) return true;
return false;
}
};
2. 丑数
可以参考昨天使用DP写法
class Solution {
public:
bool isUgly(int n) {
if (n == 0) return false; // 注意判断0
while (n % 2 == 0) n /= 2;
while (n % 3 == 0) n /= 3;
while (n % 5 == 0) n /= 5;
return n == 1;
}
};