完数也是简单的模拟,for加for就可以;
AC:
#include<iostream>
using namespace std;
int main()
{
int n;int b[1000];
while(cin>>n)
{
int i,j,k=0;
int sum=0;
for (i=1;i<=n;i++) //换成for(i=n;i>=1;i--)就会出现runtime error 的问题
{
sum=0;
for (j=1;j<i;j++)
if ((i%j)==0) sum=sum+j;
if (sum==i)
b[k++]=i;
}
for (i=0;i<k;i++)
{
if (i!=0) cout<<" ";
cout<<b[i];
}
cout<<endl;
}
return 0;
}