请问这个输出完数(完数等于因子和如6=1+2+3)和他的因子的函数哪里错了

#include
int main()
{int a,b,x=0;
for(a=1;a<=1000;a++)
{for(b=a/2,x=0;b>=1;b--)
{if(a%b==0)
x=x+b;}
if(a==x)
printf("%d: ",a);
for(b=a/2,x=0;b>=1;b--)
{if(a%b==0&&a/b>=1)
printf("%d",b);}}
return 0;
}

为什么我提交了两次答案都给我吞掉了?!

if(a==x)//这里应该加 { ,什么原因你懂的吧
printf("%d: ",a);
for(b=a/2,x=0;b>=1;b--)

强烈建议:
if条件后面一定要加上花括号,即使只有一条语句!!!
if条件后面一定要加上花括号,即使只有一条语句!!!
if条件后面一定要加上花括号,即使只有一条语句!!!

另外帮你调整了一下输出的格式,看着更整齐

#include<stdio.h>
int main()
{int a,b,x=0;
for(a=1;a<=1000;a++){
    for(b=a/2,x=0;b>=1;b--){
        if(a%b==0){
            x=x+b;
        }
    }
    if(a==x){
        printf("%d:",a);
        for(b=a/2,x=0;b>=1;b--){
            if(a%b==0&&a/b>=1){
                printf(" %d",b);
            }
        }
        printf("\n");
    }
}
return 0;
}

那必定是写错了啊

img

#include<stdio.h>
int main()
{int a,b;
for(a=1;a<=1000;a++)
{    
    int x=0;
    for(b=1;b<a;b++)
    {if(a%b==0)
    x=x+b;}
    if(a==x){
    printf("%d: ",a);
    for(b=1;b<a;b++)
    {if(a%b==0)
    printf("%d\t",b);}
    printf("\n");
    }
}

return 0;
}