一个数如果恰好等于它的因子之和,这个数就称カ“完数”。例如,6的因子为1,2,3.而6=1十2十3,因此6是“完数”。編程序找出1000之内的所有完数,并按下面格式輸出其因子:
6 its factors are 1,2,3.
#include <stdio.h>
#define MAXSIZE 50
#define RANGE 1000
void fun(int n,int arr[])//判断n是否为完数
{
int i,sum=0,count=0;
for(i=1;i<n;i++)//连续存储n的因子于数组
if(n%i==0)
{
arr[count]=i;
count++;
}
for(i=0;i<MAXSIZE;i++)
{
if(arr[i]!=0)
sum+=arr[i];//因子求和
else break;//遇数组元素为0时结束累加
}
if(n==sum)
{
printf("%d,Its factors are ",n);
for(i=0;;i++)
{
if(arr[i]==0) break;//遇数组元素为0时结束打印
printf("%4d",arr[i]);
}
putchar('\n');
}
}
void main()
{
int n,arr[MAXSIZE],j;
for(n=1;n<RANGE;n++)
{
for(j=0;j<MAXSIZE;j++)//数组清零
arr[j]=0;
fun(n,arr);//判断n是否为完数
}
}