background image

                 for (d=1;d<n;d++) 
                 { 
                    if (n%d==0)  //d 表示~n-1 之间的数,如果 n 能整除 d,则 d 是 n 的一个因子 
                         sum=sum+d; //sum 表示 n 的因子之和 
                 } 
                 if (n==sum)  // 如果 n 与 n 的因子之和相等,则表明 n 是一个完数 
                 { 
                     printf(" \n");  
                     printf( "%d" ,n);  
                     printf(" its factors are " );  
                     for (d=1;d<n;d++) 
                     { 
                         if (n%d==0)  
                             printf("%d" ,d);  
                     } 
                 }         
              } 
         } 
     } 
     printf(" \n");  
     return  0; 

 
从图

1 的编译链接结果可知,该程序不存在语法错误。该程序的运行结果如

2 所示。从图 2 及表 1 中的代码可看出,程序运行后并没有输出 1000 以内的

所有完数及其因子。从而可知程序结果与开发者预期不一致

( 也就是说,程序存

在逻辑错误

) ,这时需要通过调试的手段来找出逻辑错误,并加以修改。