程序员是值得尊敬的,程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件。
Description
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
Input
N
Output
? its factors are ? ? ?
Sample Input
1000
Sample 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 main()
{
static int k[20]; //用来存放因子
int i,j,n,s,a;
scanf("%d",&a);
for(j=2;j<a;j++)
{
n=0; //因子的个数
s=j;
for(i=1;i<=j/2;i++) //从1到该数的二分之一 二分之一之后不可能是他的因数
{
if((j%i)==0) //如果是j的因子
{
n++; //因子个数+1
s=s-i; //让该数减去它的因子 若最后为0则是完数
k[n]=i; //存放因子
}
}
if(s==0) //是完数,则输出
{
printf("%d its factors are ",j);
for(i=1;i<=n;i++) //循环输出因子
printf("%d ",k[i]);
printf("\n");
}
}
return 0;
}