1.问题详述:一个数恰好等于这个数的因子之和,这个数就被称为“完数”。
例如:6=1+2+3.
2.分析:可以使用两个循环嵌套。外层循环for(i=2;i<=1000;i++)用来遍历2到1000;内层循环for(j=2,j<=i/2;j++)来计算因子的和。
如果因子之和n=当前数i,则这个数是完数。
3.代码:
#include<stdio.h>
int main(){
int n;
int i,j;
printf("1000以内的完数: \n");
for(i=2;i<=1000;i++){
n=1;
for(j=2;j<=i/2;j++){
if(i%j==0){
n=n+j;
}
}
if(n==i){
printf("%d\n",i);
}
}
return 0;
}
4.运行结果: