21xrx.com
2024-12-27 14:09:03 Friday
登录
文章检索 我的文章 写文章
C++实现求解1-1000之间的完数
2023-06-27 21:09:19 深夜i     --     --
C++ 完数 求解 1-1000 程序

完数是指一个数恰好等于它的因子之和,例如6就是一个完数,因为1+2+3=6。求解1-1000之间的完数可以使用C++语言进行实现。

首先需要明确一个数是不是完数,可以通过枚举它的因子并计算它们的和,最后与这个数本身进行比较。下面是实现代码:


#include <iostream>

using namespace std;

int main() {

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

    int sum = 0;

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

      if (i % j == 0) {

        sum += j;

      }

    }

    if (sum == i)

      cout << i << "是完数" << endl;

    

  }

  return 0;

}

上述代码使用了两个循环,外层循环枚举1-1000的每个数,内层循环枚举这个数的因子并计算它们的和,最后判断是否与这个数本身相等。如果相等,就输出这个数是完数。

运行结果如下:


6是完数

28是完数

496是完数

这证明1-1000之间只有三个完数,分别是6、28和496。

如果想要提升代码的效率,可以使用一些优化技巧。例如内层循环只需要枚举到这个数的一半即可,因为它的因子最大也只可能是它的一半。同时还可以使用一些数学技巧,例如一个数的因子都是成对出现的,可以优化枚举的范围。

总之,C++语言可以很方便地实现求解1-1000之间的完数,同时还有很多优化的空间提升代码的效率。

  
  

评论区

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