我们定义完美数为一个正整数,其值等于所有因子(不包含其本身)之和。给定一个整数,判断是否为完美数。c++
时间: 2024-10-09 10:07:59 浏览: 40
在C++中,你可以编写一个函数来检查一个数是否是完美数。下面是一个简单的示例,使用循环遍历该数的所有可能因子并累加它们,如果最后得到的和等于原数,那么这个数就是完美数,反之则不是。
```cpp
#include <iostream>
#include <cmath>
bool isPerfectNumber(int num) {
if (num <= 1) { // 完美数定义排除1
return false;
}
int sum = 1; // 包含1作为因子
for (int i = 2; i * i <= num; ++i) { // 只需检查到 sqrt(num) 即可
if (num % i == 0) {
// 如果i是因子,那么num/i也是因子(除非i已经是num的平方根,此时已考虑过)
sum += i;
if (i != num / i) { // 避免重复计数num/i
sum += num / i;
}
}
}
return sum == num; // 返回总和是否等于原始数值
}
int main() {
int input;
std::cout << "Enter a number to check for perfection: ";
std::cin >> input;
if (isPerfectNumber(input)) {
std::cout << input << " is a perfect number.\n";
} else {
std::cout << input << " is not a perfect number.\n";
}
return 0;
}
```
在这个程序中,用户输入一个数,然后`isPerfectNumber`函数会检查它是否为完美数,并打印相应的消息。
阅读全文