- int main(){
- int i,n,sum;
- for(n=1;n<=1000;n++)
- {
- sum = 0; // 每次都必须初始化sum,,原因自己想.
- for(i=1;i<n;i++) // i必须小于n,否则,每个数和1都是自己的因子,那么就不可能是自己的因子之和了. 比如,1+2+3+6>6,,只剩1了.
- {
- if(n%i==0)
- sum +=i;
- }
-
- if(sum==n) // 必须等循环结束,才做判断,否则,会多很多数. 比如24.
- {
- printf("%d ",n);
- for(i=1;i<n;i++)
- {
- if(n%i==0)
- printf("%d ",i);
- } printf("\n");
- }
-
- }
-
- return 0;
- }
复制代码 |