A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//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;
}

1 个回复

正序浏览
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. }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马