编程完美数字怎么写

时间:2025-01-25 06:28:48 网络游戏

完美数是指一个正整数,其所有真因数(即除自身外的所有因数)的和等于它本身。以下是一个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++编译器中运行,检查任意一个正整数是否为完美数。