using namespace std;
/*完全數判別:因子之和等於數本身如,6=1+2+3,6爲完全數
找出輸入範圍內的所有完全數,範圍小於1000
*/
void main()
{
int m = 0;
int r[100];
int sum=0;
cout<<"請輸入範圍"<<endl;
cin>>m;
// 先求出每個數的因子,然後判斷他們的和是否等於該數
for(int i=2;i<m;i++)//從二開始計算,因爲1肯定不是完全數
{
int k=0;
for(int j=1;j<i;j++)
{
if(i%j==0)
{
r[k]=j;
k++;
sum+=j;
}
}
if(sum == i){
cout<<i<<"——是個完全數,它有"<<k+1<<"個因子——,因子分別爲:";
for(int i=0;i<k;i++)//此處不能寫成i<=k,否則會有一個隨機數,呵呵,實際長度就是小於k。
{
cout<<r[i]<<",";
}
cout<<endl;
}
k=0;//清空,便於下個數使用改變量
sum=0;//清空,便於下個數使用改變量
}
}