#include<stdio.h>


int iswanshu(int n)
{
    int i,j,count ;
    i=count=0 ;
    j=n ;
    while(i!=1)
    {
        i=n/2 ;
        if(n%2!=0)
        i++;
        if(j%i!=0)
        {
            return 0 ;
        }
        if((i%2)!=0&&i>1)
        count++;
        n=i ;
    }
    if(count>0)
    {
        return 1;
    }else{
        return 0;
    }
}

int checkagain(int n)
{
    int i,sum ;
    sum=0 ;
    for(i=1;i<n;i++)
    {
        if(n%i==0)
        sum=sum+i ;
    }
    if(sum==n){
        return 1 ;
    }else{
        return 0 ;
    }
}

void printwanshu(int n)
{
    int i ;
    i=0 ;
    printf("%d its factors are ",n);
    while(i!=1)
    {
        i=n/2 ;
        if(n%2!=0)
        i++;
        printf("%d,",i);
        n=i ;
    }
    printf("\n");
}

int main()
{
    int i,n ;
    while(1)
    {
        printf("本程序将实现输出1-n之间的完数,n>=1\n现在请输入n:");
        scanf("%d",&n);
        printf("你输入的数是%d\n",n);
        if(n>=1)
        break ;
    }
    for(i=1;i<=n;i++)
    {
        if(iswanshu(i)==1&&checkagain(i)==1)
        printwanshu(i);
    }
    return 0;
}