/*
总的来讲,1.先判断是不是完数
2.再反过来求因数
3.输出格式分解开来
*/
#include <iostream> using namespace std; int main() { int i,j,s; for(i=2;i<=1000;i++) { s = 0; for(j=1;j<=i-1;j++ ) { if(i%j==0) s += j; } if(s==i) //要判断的是总的s;所以这个是并列关系 { cout<<s<<" = 1"; //任何一个完数都是s = 1……所以不妨直接输出 for(int k=2;k<=s;k++) //反向求因数 { if(s%k==0) { if(k<s) cout<<"+"<<k; //后面的就输出+x1+x2+…… else cout<<"n"; //满了换行 } } } } return 0; }
12345678910111213141516171819202122232425262728293031323334