完数定义:如果一个数等于它的因子之和
例如:6=1+2+3
编程工具:codeblocks
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main() {int sum;//所有因子的的和int arr[20] = { 0 };//声明一个数组用来存储所有的因子int n;//for循环i自增从1到1000——大循环for (int i = 1; i <= 1000; i++) {sum = 0;n = 0;//小循环找到一个i所有的因子和因子和for (int j = 1; j < i; j++) {if (i % j == 0) {sum += j;//统计因子只和//将i的因子存入数组arr[n] = j;n++;}}if (i == sum) {//如果因子之和等于这个数printf("%d : ", i);//打印出完数//将完数的因子打印出for (int m = 0; m < n; m++) {printf(" %d", arr[m]);}printf("\n");}}return 0;
}
结果如下:



![[C语言] [试题详解] 求1000之内的所有 完数](https://img-blog.csdnimg.cn/1c4d930b2d6c4e56b5e0f4f9797763f3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oiR5piv6buR6ZOB5pif5769,size_7,color_FFFFFF,t_70,g_se,x_16)















