救救孩子吧,这个C语言程序哪里错了?

题目是要判断是否为神奇的数,即一个数可以恰好等于它的因子之和,然后要输入这个数字判断,如果是要输出这个数和其因子,不是输出
no。
#include <stdio.h>
int main()
{
int a, sum, x;
while(scanf("%d", &x)!= EOF){
for (a = 2; a < x/2; a++)
{
if (x % a == 0)
sum += a;
}
if (sum == x)
{
printf("%d,its factors are 1,", x);
for (a = 2; a < x / 2; a++)
if (x % a == 0) printf("%d\n", a);
}
  else  printf("no\n");
  }
return 0;
}

img


a <= x/2吧,要是x=4就不对了