题目
如果一个数它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身,则称该数为“完全数” 。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等
方法1
for循环内将输入整数n除以1、2、3、4···,若商为整数(得到真因子)则累加。
#include <iostream>
using namespace std;
int main() {
int j,s=1,n,i;
cout << "这是一个判断完全数的程序!";
cout << "请输入一个正整数:";
cin >> n;
for(int i = 2; i < n; i++){
if(n % i == 0){
j=n/i;
s=s+j;
}
}
cout << "s=" << s << endl;
if(s == n){
cout << n << "是完全数";
}
else{
cout << n << "不是完全数";
}
}