21xrx.com
2025-04-01 19:15:21 Tuesday
文章检索 我的文章 写文章
C++输出n以内的完数
2023-06-28 08:10:58 深夜i     --     --
C++ 完数 输出 n 以内

完数指除本身外所有因子之和等于本身的自然数。在计算机编程中,我们经常需要输出一定范围内的完数。本文将介绍使用C++语言输出n以内的所有完数的方法。

首先,我们需要明确如何判断一个数是否是完数。可以使用一个for循环遍历该数的所有因子,并将其相加,最后与该数本身比较是否相等即可。以下是判断函数的代码实现:

bool isPerfectNumber(int n) {
  int sum = 0;
  for (int i = 1; i <= n / 2; i++) {
    if (n % i == 0) {
      sum += i;
    }
  }
  return sum == n;
}

使用上述函数,我们可以遍历1至n,判断每个数是否为完数,然后将所有的完数输出即可。以下是输出函数的代码实现:

void printPerfectNumbers(int n) {
  for (int i = 1; i <= n; i++) {
    if (isPerfectNumber(i))
      cout << i << endl;
    
  }
}

最后,我们可以在main函数中调用上述函数输出n以内的所有完数。以下是完整的代码实现:

#include <iostream>
using namespace std;
bool isPerfectNumber(int n) {
  int sum = 0;
  for (int i = 1; i <= n / 2; i++) {
    if (n % i == 0) {
      sum += i;
    }
  }
  return sum == n;
}
void printPerfectNumbers(int n) {
  for (int i = 1; i <= n; i++) {
    if (isPerfectNumber(i))
      cout << i << endl;
    
  }
}
int main() {
  int n;
  cout << "请输入一个正整数n:" << endl;
  cin >> n;
  cout << "1至" << n << "范围内的完数有:" << endl;
  printPerfectNumbers(n);
  return 0;
}

使用以上代码,我们就可以方便地输出n以内的所有完数了。

  
  

评论区