资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数。注意1不是完数。
输入格式
无
输出格式
如有多个完数,则分行输出,每行输出一个完数。(注意,不要输出其他任何多余字符)
解题思路:
完数 = 因子之和,所以找到每个数的1-这个数之前一个数的所有因子就行,然后累计额因子之和就可以了
代码:
#include <iostream>
using namespace std;
int main(){
int i,j;
for(i = 1;i < 1000;i++){
int sum = 0;
for(j = 1;j < i;j++){ //求因子
if(i % j == 0){
sum += j; //因子之和
}
}
if(sum == i){ //因子之和==i表示i为完数
cout << i << endl;
}
}
return 0;
}