关于C语言完数的程序

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:21:50
我的程序,为什么只显示了6,28没有496,错在哪里了?
#include<stdio.h>
main()
{int a,i,c,n;
int k[15];
for(a=1;a<=1000;a++)
{n=0;
c=0;
for(i=1;i<a;i++)
{
if((a%i)==0)
{n++;
k[n]=i;
c=c+i;
}
}
if(a==c)
{printf("%d是一个完数,它的因子是",a);
for(i=1;i<=n;i++)
printf("%d,",k[i]);
printf("\n");
}
}
}

int k[15]; //这里定义数组长度为15来存放因子是不够的,有的数的因子不只15个,你试试int k[50]就没问题了.
例:180有17个因子,360有23个因子,你加个条件判断输出就可以看出来了.

if (n>15)
printf ("\n%d,%d\n",n,a);

for(a=1;a<=1000;a++)
{n=0;
c=0;
for(i=1;i<a;i++)
{
if((a%i)==0)
{n++;
k[n]=i;
c=c+i;
}
}
这个东西和下面这些程序,你自己看看有区别吗??
n=0;
c=0;
for(i=1;i<1000;i++)
{
if((a%i)==0)
{n++;
k[n]=i;
c=c+i;
}
你再怎么循环,每次循环a的开始,n和c都是0,而且你if的开始就n++,所以永远k[0]无法赋值呀
自己仔细检查一下吧,错误多多,看来还是新手,多多尝试自己遍程序,加油~~