寻找完美数ptac++
时间: 2024-10-16 17:07:55 浏览: 32
寻找完美数(Perfect Number)是指这样的正整数,它等于其所有真因子(即除了自身以外的所有正因数)之和。在C++中,可以编写程序来检查给定的数字是否为完美数。以下是基本的步骤:
1. 定义一个函数,接收一个整数作为输入。
2. 初始化一个变量,用于存储该数字的因子之和。
3. 遍历从1到该数字的平方根(因为较大因子一定小于或等于这个范围),如果当前数能被输入数字整除,则它是因子,将它加入因子之和,并同时除以这个因子,以便去除重复计算。
4. 检查最后一个没有除尽的因子是否等于输入数字本身减去因子之和。如果是,说明输入数字是完美数;如果不是,就不是完美数。
5. 返回结果。
下面是一个简单的示例代码片段:
```cpp
#include <iostream>
#include <cmath>
bool isPerfectNumber(int num) {
if (num <= 0) return false; // 排除负数和零
int sum = 1; // 自身也是因子
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) { // 如果能整除
sum += i;
if (i != num / i) { // 若有重复因子(如4=2*2),只加一次
sum += num / i;
}
}
}
return sum == num && num != 1; // 如果最后加的是自身且非1,则是完美数
}
int main() {
int number;
std::cout << "请输入一个正整数: ";
std::cin >> number;
if (isPerfectNumber(number)) {
std::cout << number << " 是一个完美数.\n";
} else {
std::cout << number << " 不是完美数.\n";
}
return 0;
}
```
阅读全文