21xrx.com
2024-12-22 22:59:53 Sunday
登录
文章检索 我的文章 写文章
C++编程实现求1000以内完数及其因子输出
2023-06-29 03:15:27 深夜i     --     --
C++编程 完数 因子 输出 1000以内

完数,又称完全数或完美数,是指一个数等于它的因子之和,且不包括自身。例如,6就是一个完数,因为它等于1+2+3。

本文将介绍如何使用C++编程实现求1000以内的完数及其因子输出。

首先,我们需要定义一个判断一个数是否为完数的函数isPerfectNumber。该函数需要实现以下步骤:

1. 遍历1到num-1的所有整数。

2. 将num能够整除的整数加入一个因子集合中。

3. 如果因子集合中所有数的和等于num,则num是完数,返回true;否则返回false。

下面是C++代码实现:


bool isPerfectNumber(int num)

{

  int sum = 0;

  for (int i = 1; i <= num / 2; ++i) {

    if (num % i == 0) {

      sum += i;

    }

  }

  return (sum == num) ? true : false;

}

接下来,在主函数中遍历1到1000的所有整数,判断每个数是否为完数。如果是完数,再次遍历该数的所有因子,将它们加入一个因子集合中。最后输出完数及其因子集合。

下面是C++代码实现:


#include <iostream>

#include <vector>

using namespace std;

bool isPerfectNumber(int num);

void printPerfectNumber(int num);

int main()

{

  for (int i = 1; i <= 1000; ++i) {

    if (isPerfectNumber(i)) {

      printPerfectNumber(i);

    }

  }

  return 0;

}

bool isPerfectNumber(int num)

{

  int sum = 0;

  for (int i = 1; i <= num / 2; ++i) {

    if (num % i == 0) {

      sum += i;

    }

  }

  return (sum == num) ? true : false;

}

void printPerfectNumber(int num)

{

  cout << num << ": {1";

  vector<int> factors;

  for (int i = 2; i <= num / 2; ++i) {

    if (num % i == 0) {

      factors.push_back(i);

    }

  }

  for (int factor : factors) " << factor;

  

  cout << "}" << endl;

}

现在执行上述程序,我们可以看到输出了1000以内的所有完数及其因子集合。例如,6的因子集合为 3。

本文介绍了如何使用C++编程实现求1000以内的完数及其因子输出。这是一个简单但非常有用的程序,可以帮助初学者深入理解因子和完数的概念,并提高他们的编程技能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复