帮忙看看下面代码有什么错误?

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:18:03
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1,则称其为“完数”,就是输出2~60的所有完数!

#include "stdio.h"
main()
{
int i,j,k[60],l,m=2,n;
int o[60],p[60];
int sum=0;
for(m=2;m<=60;m++)
{ j=0;
for(i=1;i<m;i++)
{ if((m%i)==0)
{
j++;
k[j]=i;
l=j;
}}
for(j=1;j<=l;j++)
{

sum=sum+k[j];
}
if(sum==m)
o[m]=m;
}
for(m=2;m<=60;m++)
if(o[m]!=0)
printf("wanshu:%d,%d",o[m],m);

}

main()
{
int i,j,k[60],l,m=2,n;
int o[60]={0},p[60];//这里一定要初始化
int sum=0;
for(m=2;m<=60;m++)
{ j=0;
for(i=1;i<m;i++)
{ if((m%i)==0)
{
j++;
k[j]=i;

l=j;
}}
sum=0;//别忘了每次清零
for(j=1;j<=l;j++)
{

sum=sum+k[j];
}
if(sum==m)
o[m]=m;
}
for(m=2;m<60;m++)//<60,不是<=
if(o[m]!=0)
printf("wanshu:%d,%d\n",o[m],m);

}

#include "stdio.h"
main()
{
int count;
for(int i=2; i<60; i++)
{
count = 0;
for(int j=1; j<i; j++)
if(i%j == 0)
count += j;
if(count == i)
printf("wanshu:%d\n",i);
}
}