/*
总的来讲,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;
}
本文介绍了一种用于寻找并分解完数的算法。通过双重循环,首先判断指定范围内的整数是否为完数,然后分解其所有真因数。算法使用C++实现,详细展示了如何从2到1000范围内找出完数,并将其分解为真因数之和。
5万+

被折叠的 条评论
为什么被折叠?



