21xrx.com
2025-03-28 22:54:12 Friday
文章检索 我的文章 写文章
C++实现完数判断
2023-06-30 12:49:42 深夜i     12     0
完数 C++ 算法 程序 循环

完数,是指一个数恰好等于它的因子之和,例如6、28、496等,是数论中的经典问题。这篇文章将介绍如何使用C++实现完数判断。

完数判断的思路是遍历一个数的所有因子,并将它们加起来,判断结果是否等于这个数。

在C++中,使用循环语句和条件判断语句可以有效实现这一过程。这里我们可以从2开始循环到这个数的平方根,并判断是否是它的因子。如果是,则将其加入一个累加器中。最后比较累加器和这个数是否相等即可得出结果。

下面是完数判断的C++实现代码:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
  int n;
  cout << "请输入一个正整数:" << endl;
  cin >> n;
  int sum = 1;
  for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) {
      sum += i;
      if (i != n / i) {
        sum += n / i;
      }
    }
  }
  if (sum == n)
    cout << n << "是完数" << endl;
   else
    cout << n << "不是完数" << endl;
  
  return 0;
}

在上面的代码中,我们使用了一个变量sum来累加因子的和,初始值为1,因为1也是任何数的因子。当循环遍历到一个因子i时,如果它是这个数n的因子,我们就将其加入sum中,然后再判断n/i是否也是它的因子,如果是,也将其加入sum中,确保所有因子被计算。最后,我们判断sum是否等于n即可。

这样,完数判断就成功实现了。以上代码可以扩展到任何正整数,可以在数论问题中得到广泛应用。

  
  

评论区

请求出错了