C++Practise16:完全數判別

#include
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;//清空,便於下個數使用改變量
 }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章