思路:
完美数是指一个数是除了自身之外的因子的和。
代码:
void getPerfectNum(){
for(int i=2;i<=1000;i++){
if(isPerfectNum(i)){
cout<<i<<"\t";
}
}
}
bool isPerfectNum(int num){
int sum=0;
for(int i=1;i<num-1;i++){
if(num%i==0){
sum=sum+i;
}
}
return sum==num?true:false;
}
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数学函数,求平方根、三角函数、对数函数、指数函数...
// MAXSIZE
#define MAXSIZE 1000
//用于使用c++的输出语句
#include<iostream>
using namespace std;
//设计一个算法,找出1000以内的所有完美数
bool isPerfectNum(int num);
void main(){
int arr[MAXSIZE]={};
int j=0;
for(int i=2;i<=1000;i++){
if(isPerfectNum(i)){
arr[j++]=i;
}
}
for(int i=0;i<j;i++){
cout<<arr[i]<<"\t";
}
}
bool isPerfectNum(int num){
int sum=0;
for(int i=1;i<num-1;i++){
if(num%i==0){
sum=sum+i;
}
}
return sum==num?true:false;
}