以下程序的功能是输出1000以内的所有完数及其因子。说明:所谓完数是指一个整数的值等于它的因子之和。例如,6的因子是1、2、3,而6=1+2+3,故6是一个完数。请填空。

#include <stdio.h>

void main()

{ int i,j,m,s,k,a[100] ;

for(i=1 ; i<=1000 ; i++ )

{ m=i ;

s=0 ;

k=0 ;

for(j=1 ; j<m ; j++)

/SPACE/

if(【?】)

{ s=s+j ;

/SPACE/

【?】=j ;

}

if(s!=0&&s==m)

{ /SPACE/

for(j=0 ; 【?】 ; j++)

printf("%4d",a[j]) ;

printf(" =%4d\n",i) ;

}

}

}

修改如下:


#include <stdio.h>

int main()
{ 
    int i,j,m,s,k,a[100] ;
    
    for(i=1 ; i<=1000 ; i++ )
    
    { 
        m=i ;
        
        s=0 ;
        
        k=0 ;
        
        for(j=1 ; j<m ; j++) 
        
    
        
        if(i%j==0) //如果这个整数能被小于它的数整除,说明是他的因子 
        
        { 
            s=s+j ;
            
    
            
            a[k++]=j ; //把这个因子存入数组 
        
        }
        
        if(s!=0&&s==m)
        
        { 
        
        
            for(j=0 ; j<k ; j++) //打印存这个整数因子数组里的所有因子 ,上面的循环里的k记录了这个数组的所有因子的个数 
            
            printf("%4d",a[j]) ;
            
            printf(" =%4d\n",i) ;
        
        }
    
    }

}

img