首页 > 其他 > 详细

【编程小题目8】求解完数

时间:2015-04-20 16:45:45      阅读:265      评论:0      收藏:0      [点我收藏+]

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出100以内的所有完数。

 分析:本质还是求质因数。

#include <iostream>

using namespace std;

bool IsPerfect(int n)
{
  int i, j = 0;
  int Temp = n,Sum = 1;
  int arr[100] = {‘0‘};

  for(i = 2; i <= n; i++)
  {
    if(i == n)
    {
      arr[j++] = i;
    }
    else
    {
      while (n % i == 0)
      {
        arr[j++] = i;
        n = n / i;
      }
    }
  }
  for(i = 0; arr[i] != 0; i++)
  {
    Sum += arr[i];
  }

  if(Temp == Sum)
  {
    return true;
  }
  else
  {
    return false;
  }

}

int main()
{
  const int n = 100;

  for(int i = 1; i <= n; i++)
  {
    if(IsPerfect(i))
    {
      cout << i;
      if(i % 5 == 0)
      {
        cout << endl;
      }
    }
  }
  cout << endl;

  return 0;
}

【编程小题目8】求解完数

原文:http://www.cnblogs.com/FoxShark/p/4441747.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!