1. 程式人生 > >【程式19】 題目:一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如6 = 1+2+3.程式設計 找出1000以內的所有完數。

【程式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;
}