如何求范围内完数的个数

一个数恰好等于它的因子的和则称其为完数,如6=1+2+3,6为完数,输入一个指定的范围,输出完数的个数



int main()
{
    int a,b,sum=0;
    scanf("%d %d",&a,&b);
    for(int j=a;j<=b;++j)
    {
int temp=0;
         for(i=1;i<j;i++)
    {
        if(j%i==0)
            temp+=i;
    }
if(j==temp) ++sum;
    }
    printf("%d\n",sum);
    
    return 0;
}