问题:一个数如果恰好等于他的因子之和,这个数就称为“完数”,例如6=1+2+3,编程找出1000以内的所有完数
分析:
因子,就是两个整数相乘,能够得出这个数,因为题目要求没有他本身,所以只要从1循环到这个数的一半,进行寻找因子,例如6=3*2,6=1*6,所以1,2,3,6就是6的因子,但是题目中没有6,所以也就循环一半就可以了。
代码:
main(){
int n,k[10];
//scanf("%d",&n);
//输出因子
int j,i;
for(j=2;j<1000;j++){
//printf("%d ",j);
int sum=0,m=0;
for(i=1;i<=j/2;i++){
if(j%i==0){
//i就是因子
sum+=i;
k[m]=i;
m++;
}
}
if(sum==j){
printf("%d=",j);
for(i=0;i<m;i++){
if(i==m-1){
printf("%d",k[i]);
}else{
printf("%d+",k[i]);
}
}
printf("\n");
}
}
}
结果: