所谓完全数就是一个数的所有因子之和恰好等于它本身,例如:6=1+2+3;28=1+2+4+7+14
C++实现方法如下:
#include <iostream>
using namespace std;
int fullNum(int);//返回一个数的因子之和
int main(){
int i;
for (i = 2; i <= 100; i++){
if (i == fullNum(i)){
cout<<i<<' ';
}
}
return 0;
}
int fullNum(int n){
int i;
int s = 0;
for (i = 1; i <= n / 2; i++){
//i <= n / 2其实是效率问题,如果要提高效率,更好的方式是再定义
//一个变量,在循环开始之前就保存好n / 2的值。否则每次都要计算n / 2
//理论上,n / 2只是表面上看起来减少了遍历次数,而事实上c++对除法运算的处理要复杂得多
//因此在循环开始之前就先计算好除法是更好的选择。
if (n % i == 0) s += i;
}
return s;
}