为什么给数组a这样赋值要失败?帮

#include <stdio.h>
int main(void)
{
    int i,j, sum=0,m,n,flag=0,a[1000],count=0;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    {
        for(j=1;j<i;j++)
        {
            if(i%j==0)
            {
                sum+=j;
            }
        }
        if(sum==i)
        {
            a[count++]=i;
        }
        sum=0;
    }

            for(i=0;i<count;i++)
            {
            printf("%d its factors are 1", a[count]);
            for(j=2;a[count]>j;j++)
            {
                if(a[count]%j==0)
                {
                    printf(",%d",j);
                }
            }
                puts("");
            }
    
    if(flag==0)
    {
        printf("Not Found!");
    }
    return 0;
}

#include <stdio.h>
int main(void)
{
    int i,j, sum=0,m,n,a[1000],count=0;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    {
        for(j=1;j<i;j++)
        {
            if(i%j==0)
            {
                sum+=j;
            }
        }
        if(sum==i)
        {
            a[count++]=i;
        }
        sum=0;
    }
    for(i=0;i<count;i++)
    {
        printf("%d its factors are 1", a[i]);
        for(j=2;a[i]>j;j++)
        {
            if(a[i]%j==0)
            {
                printf(",%d",j);
            }
        }
        puts("");
    }
    if(count==0)
    {
        printf("Not Found!");
    }
    return 0;
}

 

循环内都没有改变过flag

问题是找范围内的完数