求完数,我觉得算法没问题,但就是死循环,不知哪里少了一步,谢谢各位帮忙
求1-1000的完数,就是一个数敲好等于它的因子之和,比如6=1+2+3,28=1+2+4+7+14,答案是1-1000有三个,我编的显示是28,而且一直有很多,是死循环,想请各位有时间把我看看,谢谢了#include<stdio.h>
void main()
{
int m,i,a[10]={0},j=0; /*数组用来存放因子,因为1024是10个2相乘,小于1000的数因子个数肯定由此小于10,所以定义了10*/
for(m=2;m<1000;m++)
{
for(i=0;i<10;i++) /*让数组中元素每次开始都为,且j=0,都从0开始存放*/
a[i]=0;
j=0;
for(i=1;i<m;i++) /*求因子*/
{
if(m%i==0)
{a[j]=i;j++;}
}
if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]==m)
printf("%d\n",m);
}
}
[ 本帖最后由 tony0708 于 2009-10-29 10:56 编辑 ]