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