帮俺看看哪里不对,big佬们,

img


我有改了一下还是不对,大家看一下
#include <stdio.h>

int main()
{
int x,i,sum=0;
scanf("%d",&x);
for(i=1;i<x;i++)
{
if(x%i==0)
sum+=i;
}
if(x==sum)
printf("%d its factors are",x);
else printf("%d is not",x);
for(i=1;i<x;i++)
{
if(x%i==0)
printf("%d",i);
}
return 0;
}

sum的初值应该是0,你一开始没有加任何i,sum应该是0;此外,你的完数判断应该在循环外

#include <stdio.h>
int main()
{
int x,i,sum=0;
int buff[1000];
int count=0;
scanf("%d",&x);
for(i=1;i<=x/2;i++)//能整除的最大数x/2
{
if(x%i==0)
{
sum+=i;
buff[count++]=i;//将数据保存在数组中
}
}
if(sum!=x)//判断是否为完数
{
printf("%d is not\n",x);
}
else
{
printf("%d its factors are ",x);
for(i=0;i<count-1;i++)
{
printf("%d,",buff[i]);
}
printf("%d\n",buff[i]);
}
}
/*
6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248
8128 its factors are 1,2,4,8,16,32,64,127,254,508,1016,2032,4064
*/

#include<stdio.h>
int main()
{
    int x = 0;
    int i = 0;
    int sum = 0;
    scanf("%d", &x);
    for (i = 1; i < x; i++)
    {
        if (x % i == 0)
        {
            sum += i;
        }
    }
        if ( x == sum )
        {
            printf("%d its factors are ",x);
            for (i = 1;i < x; i++)
            {
                if (x % i == 0)
                    printf("%d ", i);
            }
        }
        else
        {
            printf("%d is not\n", x);
        }
    
    return 0;
}

初学者这样看会不会理解些,后面那个因子要持续输出的。