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;
}
};
本文探讨了两种特殊的整数——完美数和丑数。完美数是指其所有真因子之和等于本身的数,而丑数则是指只包含质因数2、3和5的正整数。文章提供了两种不同的C++实现,分别用于检查一个数是否为完美数和丑数。通过暴力枚举和动态规划的方法,展示了数值理论在算法设计中的应用。
821

被折叠的 条评论
为什么被折叠?



