九度oj-1050

题目描述:

求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。

输入:

测试数据有多组,输入n,n数据范围不大。

输出:

对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。

样例输入:

6

样例输出:

6

代码

#include <iostream>  
using namespace std;  
int main()  
{  
 int m,j,i,a[1000],kk;   
 while(cin>>m)  
 {  
     kk=0;  
     for(j=1;j<=m;j++)  
     {   
      int k=0;   
      for(i=1;i<j;i++)  
      {   
       if((j%i)==0)  
        k=k+i;   
      }   
      if(k==j)  
          a[kk++]=j;  
     }   

     for(i=0;i<kk;i++)  
     {  
         if(i!=0)  
             cout<<" ";  
         cout<<a[i];  
     }  
     cout<<endl;  
 }  
 return 0;  
}