一道关于完数的c语言题

输出1000之内的全部“完数”,要求每行输出5个,并统计完数的个数。一个数如果恰好等于它的因子之和,就称其为完数。

#include "stdio.h"
int main(int argc,char *argv[]){
    int n,m,k,i,s,t;
    for(s=k=0,n=4;n<1000;n++){
        for(m=1,t=n/2,i=2;i<=t;i++)
            if(n%i==0)
                m+=i;
        if(m==n){
            printf(++k%5 ? "%d " : "%d\n",n);
            s++;
        }
    }
    if(k%5)
        printf("\n");
    printf("A total of %d.\n",s);
    return 0;
}

不用管每行5个的问题
一万以内的完数一共只有4个