【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程
找出1000以内的所有完数.
#include <iostream>
#include <math.h>
using namespace std;
bool isPerfectNum( unsigned int num )
{
if(num < 2)
return false;
unsigned int buf[1024] = {0};
unsigned int idx = 0;
for(int i=1; i<num; i++ )
{
if(num % i == 0)
buf[idx++] = i;
}
unsigned int result = 0;
for(i=0; i<idx; i++)
{
result += buf[i];
}
if(result == num)
{
for( int j=0; j<idx; j++ )
cout<<buf[j]<<" ";
cout<<endl;
return true;
}
return false;
}
void main()
{
for(int i=2; i<=1000; i++)
{
if(isPerfectNum(i))
cout<<" "<<i<<endl;
}
}