📅  最后修改于: 2023-12-03 14:59:36.585000             🧑  作者: Mango
本问题将涉及C++的控制语句和函数的使用。
编写一个程序,读取一个数字,并检查它是否是完全数。完全数指等于其因子之和的数。
例如,6是一个完全数,因为6的因子是1、2、3,它们的和为6。
请编写一个函数,该函数将接受一个整数并返回一个布尔值,指示该数字是否为完全数。如果数字是完全数,则程序应输出 "perfect number",否则输出 "not a perfect number"。
示例输入:
6
示例输出:
perfect number
示例解释:6是完全数,因为1 + 2 + 3 = 6。
本问题可以分解为两个子问题:
第一个问题可以通过暴力枚举来解决:从1到n-1枚举每一个可能的因子,将所有相加即为总和。
第二个问题则非常简单:如果总和等于数字本身,则数字是完全数,否则不是。
下面是示例程序:
#include <iostream>
using namespace std;
bool isPerfect(int n) {
int sum = 0;
// 从 1 到 n-1 枚举每个可能的因子
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i; // 将因子加起来
}
}
if (sum == n) {
return true;
} else {
return false;
}
}
int main() {
int n;
cin >> n;
if (isPerfect(n)) {
cout << "perfect number" << endl;
} else {
cout << "not a perfect number" << endl;
}
return 0;
}
本问题涉及了程序控制流和函数的使用,是非常典型的计算问题,同时也是C++语言入门的好例子。
需要注意的是本问题并不是期望您编写一个高效的程序,而是期望您在代码中展示对控制流和函数的理解和应用。实际应用中,需要更高效的算法来计算较大的完全数。