C语言中关于for循环的一个问题

问题遇到的现象和发生背景

9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:

我的解答思路和尝试过的方法

如何表示这个因子?(辗转相除法怎么使用)如何排除这个数本身?

我想要达到的结果

6 its factors are 1,2,3

供参考:

#include <stdio.h>
int main()
{
    int N = 1000, i, n, s;
    //scanf("%d", &N);
    for (n = 2; n <= N; n++)
    {
        for (i = 1, s = 0; i <= n / 2; i++)
        {
            if (n % i == 0)
            {
                s = s + i;
            }
        }
        if (s == n)
        {
            printf("%d its factors are 1", n);
            for (i = 2; i <= n / 2; i++)
            {
                if (n % i == 0)
                    printf(",%d", i);
            }
            printf("\n");
        }
    }
    return 0;
}

可参考:https://www.runoob.com/cprogramming/c-exercise-example19.html