题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如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;
}