码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-20 16:47:19      阅读:110      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!