#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;
}