为什么不能输出是完数

一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为完全数。
例如,6 就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3=6。
现在,给定你 N 个整数,请你依次判断这些数是否是完全数。
输出格式
每个测试用例输出一个结果,每个结果占一行。
如果测试数据是完全数,则输出 X is perfect,其中 X 是测试数据。
如果测试数据不是完全数,则输出 X is not perfect,其中 X 是测试数据。

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

img