求1000以内的所有完数

2024-11-23 19:14:21
推荐回答(1个)
回答1:

程序如下:

#include 

#include 

using namespace std;

int a[500];  //存放因数

void f1(int b);  //将b的因数存到a数组

void f2();      //将a数组清零

bool f3(int c);      //验证c是否为完数

int main(){

int i;

f2();    //初始化数组a

for(i=1;i<1000;i++){

f1(i);

if(f3(i))

cout<

f2();

}

return 0;

}

void f1(int b){

int j=1,k=0;

while(j

if(b%j==0)

a[k++]=j;

j++;

}

}

void f2(){

for(int t=0;t<500;t++)

a[t]=0;

}

bool f3(int c){

int sum=0;

for(int t=0;t<500;t++)

sum+=a[t];

return c==sum;

}