21xrx.com
2025-04-18 21:27:23 Friday
文章检索 我的文章 写文章
使用C语言求1000以内的完全数
2023-06-16 22:41:13 深夜i     17     0
C语言 完全数 因数 判断 循环 算法 暴力 时间复杂度

完全数是指一个数等于它的因数(不包括它本身)之和。比如,6的因数为1、2、3,而1+2+3=6,因此6是一个完全数。本文将使用C语言编写一个程序,来求解1000以内的所有完全数。

首先,我们需要定义一个函数来判断一个数是否是完全数。该函数需要遍历该数的所有因数,将因数相加,并判断和是否等于该数。下面是实现该函数的代码:

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

上述函数采用了暴力算法,时间复杂度为 O(n)。接下来,我们只需要使用一个循环,遍历1~1000之间的所有数,并判断它们是否为完全数即可。下面是完整的程序代码:

#include 
int isPerfectNumber(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 (isPerfectNumber(i)) {
      printf("%d ", i);
    }
  }
  printf("\n");
  return 0;
}

执行上述程序,我们可以得到1000以内的所有完全数:6、28、496。

关键词:

C语言、完全数、因数、判断、循环、算法、暴力、时间复杂度。

  
  

评论区

请求出错了