一个完数的题,谁能写一个代码,并注释一下,谢谢啦
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。intput:N
output:
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248
#include<stdio.h> int fun(int n,int a[])//n为所求数据 { int i=2,k=1,j=1;//i从2开始//k为求和//j为记录数组下标 if (n==1)//考虑特殊情况 return 0; for (;i<=n/2;i++)//比较到n/2就行了~ if (n%i==0) { k+=i;//求和 a[j++]=i;// 保存数据 } return k; } int main() { int n,a[1000]={0};//保存完数的数组 a[0]=1; scanf("%d",&n);//输入数据 if (n==fun(n,a))// { printf("Yes,its factors are:\n"); for (n=0;a[n];++n) printf("%d ",a[n]); } else printf("No"); printf("\n"); return 0; }