【程序19】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6 = 1+2+3.编程 找出1000以内的所有完数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

/*
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6 = 1+2+3.编程
找出1000以内的所有完数。
*/
int main(void){
	int num = 1000, i = 0, j = 0, k = 0;
	int sum = 0;
	int div[256] = { 0 };
	for (i = 2; i <= num; i++)
	{
		sum = div[0] = 1;
		k = 0;    //存取完一个数后重新开始
		for (j = 2; j <= (i / 2); j++)   //i/2是因为有1
		{
			if (i % j == 0)  //被整除
			{
				div[++k] = j;
				sum += j;
			}
		}
		if (i == sum)
		{
			printf("%d = %d", sum, div[0]);
			for (j = 1; j <= k; j++)
			{
				printf("+ %d", div[j]);
			}
			printf("\n");
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43328180/article/details/86292017