21xrx.com
2025-06-19 16:57:42 Thursday
登录
文章检索 我的文章 写文章
C++程序:求1000以内的完数并以因子累加的形式输出
2023-07-11 16:03:21 深夜i     22     0
C++程序 完数 因子累加 1000以内 输出

完数是指一个数等于其因子之和的数,例如6=1+2+3。在C++中,我们可以编写程序来求1000以内的完数,并以因子累加的形式输出。

首先,我们需要编写一个函数来判断一个数是否为完数。这个函数需要计算出一个数的所有因子,并将它们相加。如果和等于这个数,那么这个数就是完数。

下面是这个函数的代码:

bool isPerfect(int num) {
  int sum = 0;
  for(int i = 1; i < num; i++) {
    if(num % i == 0) {
      sum += i;
    }
  }
  return sum == num;
}

接着,我们可以编写一个循环来遍历1000以内的所有数,并调用上面的函数来判断它们是否为完数。如果是完数,我们可以使用另一个循环来计算并输出它的因子。

下面是整个程序的代码:

#include<iostream>
using namespace std;
bool isPerfect(int num) {
  int sum = 0;
  for(int i = 1; i < num; i++) {
    if(num % i == 0) {
      sum += i;
    }
  }
  return sum == num;
}
int main() {
  for(int i = 1; i <= 1000; i++) {
    if(isPerfect(i)) {
      int sum = 0;
      cout << i << " = ";
      for(int j = 1; j < i; j++) {
        if(i % j == 0) {
          sum += j;
          cout << j;
          if(sum != i) {
            cout << " + ";
          }
        }
      }
      cout << endl;
    }
  }
  return 0;
}

当我们运行这个程序时,它会输出1000以内的所有完数,并以因子累加的形式输出。例如:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248

这个程序不仅可以用来计算1000以内的完数,也可以修改代码来计算其他范围内的完数。同时,这个程序也展示了如何在C++中编写函数和循环来解决问题。

  
  

评论区