黑马程序员技术交流社区

标题: 今天考试的一道题,就是打印不出结果!大神帮忙看下 [打印本页]

作者: 13717407086    时间: 2016-5-13 22:02
标题: 今天考试的一道题,就是打印不出结果!大神帮忙看下
//2,完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。
//编程输出1000以内的所有完数


#include <stdio.h>

int main(int argc, const char * argv[]) {
//匡变量
  int sum = 0;
//    双从循环
    for (int i = 2; i <= 1000; i++)
    {
         
        for (int j = 1; j <i;j++)
            if (i%j==0)
                sum +=j;
            //判断  是就输出  相加和等于原值
            if (sum == i) {
                printf("%d\n",i);
            }
        }
            
   
    return 0;
}

作者: 2528    时间: 2016-5-14 08:35
sum 放在两个循环之间,代码改动如下:
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]) {
  3.    
  4.     int sum ; //用来保存因子数之和
  5.    
  6.     for (int i = 2; i <= 1000; i++){
  7.         
  8.         sum = 0 ;
  9.         for (int j = 1; j <i;j++){
  10.             
  11.             if (i%j==0){
  12.                 sum +=j;
  13.             }
  14.         }
  15.         
  16.         //判断  是就输出  相加和等于原值
  17.         if (sum == i) {
  18.             printf("%d\n",i);
  19.         }
  20.     }

  21.     return 0;
  22. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2