close

/*
 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.jpg 

Perfect Number 規則:

一個整數等於除了自己本身以外的因數總和

arrow
arrow
    全站熱搜

    flyinsky76 發表在 痞客邦 留言(0) 人氣()