请问各位,求1000以内的为完数的自然数,我错在哪了,输出老是错误,能帮纠正一下吗


#include<stdio.h>
void get_ws_ys();
int main()
{
    get_ws_ys();
    return 0;
}
void get_ws_ys()
{
    int t,i,j,k=1,factor[]={1},s=1;
    for(i=1;i<=1000;i++)
    {
        if(i==1)
        {
        printf("1为完数\n");
        printf("其因子有1个\n");
        printf("为1\n");
        continue;
        }
        if(i==2)
        {
        continue;
    }
        for(j=2;j<=i-1;j++)
        {
            if(i%j==0)
            {
                s+=j;
                factor[k]=j;
                k++;
            }
        }
        if(s==i)
        {
            printf("%d为完数\n",i);
            printf("其因子有%d个\n",k);
            for(t=0;t<=k-1;t++)
            {
                printf("为%d",factor[k]);
            }
        }
    }
    
}

修改如下,供参考:

#include<stdio.h>
void get_ws_ys();
int main()
{
    get_ws_ys();
    return 0;
}
void get_ws_ys()
{
    int t, i, j, k = 1, factor[20], s = 1;  //修改
    for (i = 1; i <= 1000; i++)
    {
        if (i == 1)
        {
            printf("1为完数\n");
            printf("其因子有1个\n");
            printf("为1\n");
            continue;
        }
        for (t = 0; t < 20; t++)  //修改
        {
            factor[t] = 0;
        }
        for (j = 2, k = 1, factor[0] = 1, s = 1; j <= i - 1; j++)  //修改
        {
            if (i % j == 0)
            {
                s += j;
                factor[k] = j;
                k++;
            }
        }
        if (s == i)
        {
            printf("\n%d为完数", i);   //修改
            printf("其因子有%d个为:\n", k); //修改
            for (t = 0; t <= k - 1; t++)
            {
                printf("%5d", factor[t]); //修改
            }
        }
    }
}