/*
Perfect Numbers
*/
#include<iostream>
#include<iomanip>
using namespace std;
#define size 1000
bool Perfect(int num)
{
int buf[size],i = 2,j = 0,sum = 0;
while( i*i < num )
{
if( num % i == 0 )
{
buf[j] = i;
j++;
buf[j] = num/i;
j++;
}
i++;
}
for(int k = 0;k<j;k++)
{
sum+=buf[k];
}
if( sum+1 == num && num!=1 )
{
cout<<endl<<num<<" = 1";
for(int l = 0;l<j;l++)
cout<<" + "<<buf[l];
cout<<endl<<endl;
return true;
}
else
return false;
}
void Print(int array[],int j)
{
cout<<"Perfect Numbers: ";
for(int i = 0;i<j;i++)
cout<<setiosflags(ios::right)<<setw(5)<<array[i];
cout<<endl<<endl;
}
int main()
{
int num,array[size],j = 0;
cout<<"input the number: ";
cin>>num;
for(int i = 1;i<num;i++)
{
if( Perfect(i) )
{
array[j] = i;
j++;
}
}
Print(array,j);
return 0;
}
執行結果:
Perfect Number 規則:
一個整數等於除了自己本身以外的因數總和
留言列表