对于一个正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数“。 给定一个整数 n, 如果是完美数,返回 true,否则返回 falsecpp
时间: 2024-10-24 14:09:51 浏览: 39
LeetCode 507. 完美数
在一个正整数n被称为完美数的情况下,它的和等于所有小于n且与其互质(即除1和本身以外没有其他公因数)的正因子的和。如果你需要编写一个函数来检查一个整数是否是完美数,你可以按照以下步骤设计:
```cpp
#include <vector>
using namespace std;
// 计算给定整数的所有正因子
vector<int> getFactors(int num) {
vector<int> factors;
for (int i = 1; i * i <= num; i++) {
if (num % i == 0) {
factors.push_back(i);
if (i != num / i) { // 避免添加重复因子(如对于4,我们只添加2)
factors.push_back(num / i);
}
}
}
return factors;
}
bool isPerfectNumber(int n) {
int sumOfFactors = 1; // 包含1作为因子
for (int factor : getFactors(n)) {
if (factor != n) { // 排除n自身
sumOfFactors += factor;
}
}
return sumOfFactors == n;
}
```
这个函数首先获取数字n的所有因子,然后将它们相加。如果总和等于n,那么n就是完美数,函数返回true;否则返回false。
阅读全文