一、答案:
代码如下: #include<iostream.h> int main() { int i,j,n,p[1000],S; for(n=1;n<=1000;n++){ for(i=1,j=0;i<n;i++)if(n%i==0){ p[j]=i; j++; } S=0; for(i=0;i<j;i++)S=S+p[i]; if(S==n)cout<<n<<endl; } return 0; }
运行结果:
二、说明:
这题应用穷举法,从1-1000中找: for(n=1;n<=1000;n++)
首先需要找到任意一个数的因数,并将它保存起来: for(i=1,j=0;i<n;i++)if(n%i==0){ p[j]=i; j++; }
最后判断因数之和是否等于本身,是则输出: S=0; for(i=0;i<j;i++)S=S+p[i]; if(S==n)cout<<n<<endl;