完美数是指一个正整数,其所有真因数(即除自身外的所有因数)的和等于它本身。以下是一个C++程序,用于检查一个给定的正整数是否为完美数:
```cpp
include using namespace std; // 函数: 检查某个数是否为完美数 bool isPerfect(int n) { if (n <= 1) return false; // 完美数必须是正整数且大于1 int sum = 1; // 因子之和,初始化为1 for (int i = 2; i * i <= n; i++) { if (n % i == 0) { sum += i; if (i != n / i) sum += n / i; } } return sum == n; } int main() { int num; cout << "请输入一个正整数: "; cin >> num; if (isPerfect(num)) { cout << num << " 是一个完美数" << endl; } else { cout << num << " 不是一个完美数" << endl; } return 0; } ``` 代码解释: 函数 `isPerfect(int n)`: 如果 `n` 小于等于 1,则返回 `false`,因为完美数必须是正整数且大于 1。 初始化 `sum` 为 1,因为 1 是所有正整数的因子。 遍历从 2 到 `sqrt(n)` 的所有整数 `i`,如果 `i` 是 `n` 的因子,则将 `i` 和 `n / i` 加到 `sum` 中。注意,如果 `i` 等于 `n / i`,则只加一次。 最后,检查 `sum` 是否等于 `n`,如果是,则返回 `true`,否则返回 `false`。 主函数 `main()`: 提示用户输入一个正整数。 调用 `isPerfect` 函数检查输入的数是否为完美数。 根据检查结果输出相应的信息。 示例输入输出: 输入: `28` 输出: `28 是一个完美数` 输入: `12` 输出: `12 不是一个完美数` 你可以将上述代码复制到你的C++编译器中运行,检查任意一个正整数是否为完美数。