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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陆习康 中级黑马   /  2014-7-28 14:22  /  1392 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

网上看了不少代码,可看不懂,求解,1000以内的完数,打印出来

4 个回复

正序浏览
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         // 从1000以内查找完美数
  5.         for (int i = 2; i <= 1000; i++)
  6.         {
  7.                 // 定义一个数来存放因子的和
  8.                 int sum = 0;

  9.                 // 查找小于数本身的因子,并求和
  10.                 for(int j = 1; j < i; j++)
  11.                 {
  12.                         if (i % j == 0)
  13.                         {
  14.                                 sum += j;
  15.                         }
  16.                 }

  17.                 // 如果因子和等于本身,则输出为完美数
  18.                 if (sum == i)
  19.                         {
  20.                                 printf("%d是一个完美数!\n", i);
  21.                         }
  22.         }
  23.     return 0;
  24. }
复制代码
回复 使用道具 举报

多谢了,看来我还是要好好学习学习,免得以后学习的时候纠结
回复 使用道具 举报
编写一个Java程序,输出任意数之间的所有完数。*/  
* 程序头部的注释结束
*/

public class TestComNum {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("1000以内的完数有:");
                printComNum(1000);
        }
        static void printComNum(int n){
               
               
               
                for(int i = 1; i <= n; i++)
                {
                        int sum = 0;
                        for(int j = 1; j < i; j++)
                        {
                if(i % j == 0)
                {
                        sum = sum + j;       
                }   
                        }
                        if(sum == i)
            {
                    System.out.println(i);
            }
                }
               
        }

}
回复 使用道具 举报
  1. int main ()
  2. {
  3.     //定义一个数,该数是我们要查找的范围
  4.     int num1 = 1000 ;
  5.     //顶一个和变量,代表因子之和
  6.     int sum;
  7.     //历遍我们要查找的范围,找完数
  8.     for (int i = 1; i <= num1 ;i++)
  9.     {
  10.         sum = 0;
  11.         //求每个数的因子之和
  12.         for (int j=1;j<=i/2; j++)
  13.         {
  14.             if (i%j==0)
  15.             {
  16.                 sum+=j;
  17.             }
  18.         }
  19.         if (i == sum)//如果这个数与这个数的因子之和相等,则输出
  20.         {
  21.             printf("属于完数的值有:%d\n", i);
  22.         }
  23.         
  24.     }
  25.    
  26.     return 0;
  27. }
复制代码


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