📜  C ++ |其他C ++ |问题8(1)

📅  最后修改于: 2023-12-03 14:59:36.585000             🧑  作者: Mango

C++ | 其他C++ | 问题8

介绍

本问题将涉及C++的控制语句和函数的使用。

编写一个程序,读取一个数字,并检查它是否是完全数。完全数指等于其因子之和的数。

例如,6是一个完全数,因为6的因子是1、2、3,它们的和为6。

请编写一个函数,该函数将接受一个整数并返回一个布尔值,指示该数字是否为完全数。如果数字是完全数,则程序应输出 "perfect number",否则输出 "not a perfect number"。

示例

示例输入:

6

示例输出:

perfect number

示例解释:6是完全数,因为1 + 2 + 3 = 6。

解法

本问题可以分解为两个子问题:

  1. 计算数字的因子的总和
  2. 判断这个总和是否等于数字本身

第一个问题可以通过暴力枚举来解决:从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++语言入门的好例子。

需要注意的是本问题并不是期望您编写一个高效的程序,而是期望您在代码中展示对控制流和函数的理解和应用。实际应用中,需要更高效的算法来计算较大的完全数。