21xrx.com
2024-12-22 21:55:37 Sunday
登录
文章检索 我的文章 写文章
C++程序:求1000以内的完数并以因子累加的形式输出
2023-07-11 16:03:21 深夜i     --     --
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++中编写函数和循环来解决问题。

  
  

评论区

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