#include<stdio.h>
int W(int x);
int main()
{
int x,j;
for(x=1;x<1000;x++)
{
if(W(x)==1)
printf("完数为:%d",x);
for(j=1;j<x;j++)
{
if(x%j==0)
{
printf("该完数的因子为:%d",j);
}
}
}
}
int W(int a)
{
int i;
int sum=0;
for(i=0;i<a;i++)
{
if(a%i==0)
{
sum+=i;
}
}
if(sum==a)
return 1;
else
return 0;
}
供参考:
#include<stdio.h>
int W(int x);
int main()
{
int x,j;
for(x=1;x<1000;x++)
{
if(W(x)==1)
{ //修改
printf("完数为:%d ,该完数的因子为:",x); //修改
for(j=1;j<x;j++)
{
if(x%j==0)
{
printf(" %d",j); //修改
}
}
printf("\n"); //修改
} //修改
}
return 0;
}
int W(int a)
{
int i;
int sum=0;
for(i=1;i < a;i++) // for(i=0;i<a;i++) //修改
{
if(a%i==0)
{
sum+=i;
}
}
if(sum==a)
return 1;
else
return 0;
}
建议把完整的代码放到代码块里贴出来
你的子函数的for循环中,i=0,0不能作为分母哦,改一下,改为1就好了