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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张智文 于 2013-8-10 21:04 编辑

设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身
如28=1+2+4+7+14就是一个完全数。要求:打印需满足以下格式。   

               A:约数1  约数2  约数3......   例如 6: 1   2   3  
               B:约数1  约数2  约数3......         28: 1   2   4   7   14

               C:约数1  约数2  约数3......        496: 1   2   4   8   16   31   62   124   248


本题由实习版主-张智文提供,大家快点答题哦!     


点评

实习版主发的题,大家速度走起!  发表于 2013-8-7 15:17

评分

参与人数 2技术分 +2 黑马币 +5 收起 理由
Sword + 1 + 5 赞一个!
夜默 + 1

查看全部评分

33 个回复

倒序浏览
本帖最后由 李政 于 2013-8-7 13:51 编辑
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int x =1;x<=9999;x++){//对1~9999之间作循环判断
  6.                         int y = yueshu(x);
  7.                         if(x==y){
  8.                         StringBuilder sb = new StringBuilder();//为打印规则服务
  9.                         int count = 1;
  10.                         while(count<x){
  11.                                 if(x%count == 0)
  12.                                         sb = sb.append("数"+new Integer(count).toString()+" ");
  13.                                 count++;
  14.                         }
  15.                                 System.out.println(x+"    "+sb.toString());
  16.                         }       
  17.                 }
  18.         }

  19.         public static int yueshu(int i){//检测这个数是否是自身数       
  20.                 int count = 1;
  21.                 int sum = 0;
  22.                 while(count < i){
  23.                         if(i%count == 0){
  24.                                 sum = sum +count;
  25.                         }       
  26.                         count++;
  27.                 }
  28.                 return sum;
  29.         }
  30. }
  31. //简单写了下,有待改进,可以把StringBuilder方法和约数方法合并起来
复制代码

评分

参与人数 1技术分 +1 收起 理由
Sword + 1 赞一个!

查看全部评分

回复 使用道具 举报
import java.util.ArrayList;

/*
* 设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身
* */
public class Rhythm {

        public static void main(String[] args) {
                int num = 9999;
                // 循环遍历9999以内的所有数
                for (int i = 1; i < num; i++) {
                        // 定义集合,将所有约数装入集合中
                        ArrayList<Integer> alist = new ArrayList<Integer>();
                        // 循环遍历求出指定数的所有约数
                        for (int j = 1; j < i; j++) {
                                if (i % j == 0) {
                                        alist.add(j);
                                }
                        }
                        // 循环遍历集合,求出所有约数和,判断是否和原来的数相等
                        int sum = 0;
                        for (int approximate : alist) {
                                sum += approximate;
                        }
                        // 如果是自然数,就按指定格式打印
                        if (sum == i) {
                                System.out.println(i + ":" + alist.toString());
                        }
                }
        }
}


评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 哪颗最亮的星星 于 2013-8-7 17:18 编辑

已经做完,请审核!!!

Demo.rar

548 Bytes, 阅读权限: 100, 下载次数: 0

源代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.*;

  2. public class ZiRanShu{

  3. public static void main(String[] args) {

  4. for (int i = 1; i <=9999; i++)
  5. {
  6. List list = GongYueShu(i);
  7. Iterator it = list.iterator();

  8. int sum = 0;
  9. while (it.hasNext()) {

  10. sum += (Integer) it.next();//累加所有约数

  11. }
  12. if (sum == i)
  13. {
  14. sop(list, i);
  15. }

  16. }

  17. }
  18. //用List集合存储这个数的所有公约数
  19. public static List GongYueShu(int num) {
  20. List list = new ArrayList();
  21. for (int i = 1; i < num; i++){
  22. if (num % i == 0) {
  23. list.add(i);
  24. }
  25. }
  26. return list;
  27. }

  28. //制表打印
  29. public static void sop(List l, int i)
  30. {
  31. Iterator it = l.iterator();
  32. if(i<1000)
  33. System.out.print(i+"\t:"+it.next()+"\t");
  34. else
  35. System.out.print(i+":"+it.next()+"\t");
  36. while (it.hasNext())
  37. {
  38. System.out.print(it.next()+"\t");
  39. }
  40. System.out.println();
  41. }

  42. }

复制代码

屏幕截图.jpg (16.65 KB, 下载次数: 57)

屏幕截图.jpg

评分

参与人数 2技术分 +2 收起 理由
张智文 + 1 这个略好~~
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. [code]
  2. import java.util.*;

  3. class ZiShen
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 for(int i=2;i<=9999;i++)
  8.                 {
  9.                         LinkedList<Integer> lt = new LinkedList<Integer>();
  10.                         int sum=0;
  11.                         for(int j=1;j<i;j++)
  12.                         {
  13.                                 if(i%j==0)
  14.                                 {
  15.                                         sum+=j;
  16.                                         lt.add(j);
  17.                                 }
  18.                         }
  19.                         if(i==sum)
  20.                         {
  21.                                 sop(i+":");
  22.                                 Iterator<Integer> it=lt.iterator();
  23.                                 while(it.hasNext())
  24.                                 {
  25.                                         sop(it.next());
  26.                                 }
  27.                                 System.out.println();
  28.                         }
  29.                 }
  30.         }
  31.         public static void sop(Object obj)
  32.         {
  33.                 System.out.print(obj+" ");
  34.         }
  35. }

复制代码
[/code]

0$(MH46PYD6]$)9I1{20)5X.jpg (8.37 KB, 下载次数: 59)

0$(MH46PYD6]$)9I1{20)5X.jpg

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
完成如下:
  1. /*
  2. 设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
  3. 要求:打印需满足以下格式。
  4. A:约数1  约数2  约数3......   例如 6: 1   2   3  
  5. B:约数1  约数2  约数3......        28: 1   2   4   7   14
  6. C:约数1  约数2  约数3......        496: 1   2   4   8   16   31   62   124   248

  7. */

  8. class PanDuan
  9. {
  10.         public static void ziShenShu()
  11.         {
  12.                 for (int i=2;i<=9999 ;i++ )
  13.                 {
  14.                         int sum=0;
  15.                         for (int j=1;j<=i/2 ;j++ )//一个数的约数最大为其自身的一半
  16.                         {
  17.                                 if (i%j==0)
  18.                                 {
  19.                                 sum+=j;
  20.                                 }
  21.                                 else
  22.                                 {
  23.                                         continue;
  24.                                 }
  25.                         }
  26.                         if (sum==i)//如果是自身数则按规定打印
  27.                         {       
  28.                                 System.out.print(i+":  ");//先打印这个数   i:
  29.                                 for (int j=1;j<=i/2 ;j++ )
  30.                                 {
  31.                                         if (i%j==0)
  32.                                         {
  33.                                                 System.out.print(j+"   ");//打印每个因子
  34.                                         }
  35.                                 }
  36.                                 System.out.println();//当每个数打完后换行
  37.                         }
  38.                        
  39.                 }
  40.         }
  41. }

  42. class  ZiShenShu
  43. {
  44.         public static void main(String[] args)
  45.         {
  46.                 PanDuan a=new PanDuan();
  47.                 a.ziShenShu();
  48.         }
  49. }
复制代码
输出如图:

Unnamed.png (50.69 KB, 下载次数: 36)

Unnamed.png

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
求9999以内的所有自身数的代码如下:
  1. class  SearchItselfNumber
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int i = 2;i<10000;i++)
  6.                 {
  7.                         searchNum(i);
  8.                 }
  9.         }
  10.        
  11.         //寻找自身数并打印输出
  12.         public static void searchNum(int num)
  13.         {
  14.                 int sum = 0;
  15.                 for(int i = 1;i<num;i++)
  16.                         if(num%i==0)
  17.                         {
  18.                                 sum+=i;
  19.                         }
  20.                 if(sum==num)
  21.                 {
  22.                         System.out.print(num+" : ");
  23.                         for(int i = 1;i<num;i++)
  24.                                 if(num%i==0)
  25.                                         System.out.print(i+"  ");
  26.                         System.out.println();
  27.                 }
  28.         }
  29. }
复制代码
程序运行结果截图如下:

自身数.jpg (15.1 KB, 下载次数: 41)

自身数.jpg

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. package heima;
  2. /*
  3. * 需求:
  4. * 设计一个程序是求9999以内的“自身数”,并打印出其所有约数。
  5. * 所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
  6. * 如28=1+2+4+7+14就是一个完全数。要求:打印需满足以下格式。

  7. A:约数1 约数2 约数3...... 例如 6: 1 2 3
  8. B:约数1 约数2 约数3...... 28: 1 2 4 7 14
  9. C:约数1 约数2 约数3...... 496: 1 2 4 8 16 31 62 124 248


  10. */
  11. public class MathDemo {
  12. public static void main(String[] args) {
  13. System.out.print("9999以内的自身数有:");
  14. for(int i=1;i<9999;i++){
  15. if(perfert(i)!=0)//调用perfert方法
  16. System.out.print(" "+perfert(i));
  17. }
  18. }
  19. //将判断为自身数的条件封装成一个方法
  20. public static int perfert(int m){
  21. int num=0;
  22. for(int i=1;i<m;i++){
  23. if(m%i==0)
  24. num=num+i;
  25. }
  26. if(num==m)
  27. return m;
  28. else
  29. return 0;
  30. }
  31. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报


/**
* 设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
如28=1+2+4+7+14就是一个完全数。要求:打印需满足以下格式。   

               A:约数1  约数2  约数3......   例如 6: 1   2   3  
               B:约数1  约数2  约数3......         28: 1   2   4   7   14
               C:约数1  约数2  约数3......        496: 1   2   4   8   16   31   62   124   248

* @author Administrator
*
*/
public class Exercise_5 {
       
        public static void main(String[] args) {
                getAllApproximate(6);
                System.out.println();
                getAllApproximate(28);
                System.out.println();
                getAllApproximate(496);
                System.out.println();
        }
        /**
         * 获得num的约数(不包括该数自身)
         * @param num
         */
        public static void getAllApproximate(int num){
                System.out.print(num+":");
                for (int i = 1; i <= num/2; i++) {
                        if(num%i==0){
                                System.out.print(i+"\t");
                        }
                }
        }
       
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.ArrayList;


  2. public class test {

  3.         public static void main(String[] args) {
  4.                
  5.                  int num;
  6.          int i;
  7.          for(num=1;num<=9999;num++) //循环9999内的整数
  8.          {
  9.                  int sum = 0; //用于求和
  10.                  ArrayList<Integer> list = new ArrayList<Integer>(); //用于存放约数
  11.                  for(i=1;i<=num/2;i++) //循环判断
  12.                  {
  13.                          if(num%i==0) //是否为约数
  14.                          {
  15.                                  list.add(i);  //如果是加到list中
  16.                               sum=sum+i; //累加
  17.                          }
  18.                  }
  19.                  if(sum == num)  //如果是自身数,则输出
  20.                  {
  21.                          System.out.print(num+":"); //输出自身数
  22.                          for(int j = 0;j < list.size(); j ++) //输出约数
  23.                          {
  24.                          System.out.print(list.get(j)+" ");
  25.                          }
  26.                          System.out.println();
  27.                  }
  28.          }
  29.         }
  30. }
复制代码
输出结果:
6:1 2 3
28:1 2 4 7 14
496:1 2 4 8 16 31 62 124 248
8128:1 2 4 8 16 32 64 127 254 508 1016 2032 4064

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.ArrayList;
  2. import java.util.List;

  3. /**
  4. * 求9999以内的“自身数”,并打印出其所有约数。 所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
  5. *
  6. * @author jerry
  7. *
  8. *         思路:求一个数的所有约数:因为一个数的所有约数在1和这个数本身之间(
  9. *         包括1和这个数本身),所以1到这个数之间的所有数取余为0的数为这个数的约数,
  10. *         先求出一个数的所有约数,如果这个数的所有约数之和减去这个数本身等于这个数,则此数为自身数,
  11. */
  12. public class GetSelfNum {

  13.         public static void main(String[] args) {
  14.                 // 有思路中分析可知0和1不是自身数
  15.                 for (int i = 2; i < 9999; i++) {
  16.                         isSelfNum(i);
  17.                 }
  18.         }

  19.         /**
  20.          * 判断一个数是否为自身数,如果是则打印出来,并打印它的约数
  21.          *
  22.          * @param num
  23.          *            需要判断的数
  24.          * @return true Or false
  25.          */
  26.         public static boolean isSelfNum(int num) {
  27.                 // boolean标记 记录是否是自身数 作为返回值
  28.                 boolean flag = false;

  29.                 // 一个数的除了本身外的所有约数的和,初始化为0
  30.                 int sum = 0;
  31.                 // 定义一个集合,存放一个数的除了本身外的所有约数
  32.                 List<Integer> list = new ArrayList<Integer>();

  33.                 for (int i = 1; i < num; i++) {
  34.                         // 循环判断获取这个数的约数
  35.                         if (num % i == 0) {
  36.                                 // 除了这个数本身外的所有约数相加的和赋给sum
  37.                                 sum = sum + i;
  38.                                 // 存入集合
  39.                                 list.add(i);
  40.                         }
  41.                         // 判断是否为自身数
  42.                         if (num == sum)

  43.                                 flag = true;
  44.                 }
  45.                 if (!flag)

  46.                         return flag;
  47.                
  48.                 System.out.print(sum + " : ");
  49.                 for (int i = 0; i < list.size(); i++) {
  50.                         System.out.print(list.get(i) + " ");
  51.                 }
  52.                 System.out.println();
  53.                 return flag;
  54.         }
  55. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 TreeSet<Integer> ts=new TreeSet<Integer>();
  7.                 int sum=0;
  8.                 boolean flag=false;
  9.                 for (int i=1;i<10000;i++ )
  10.                 {
  11.                         for (int j=1;j<=(i/2) ;j++ )
  12.                         {
  13.                                 if((i%j)==0)
  14.                                         ts.add(j);
  15.                         }
  16.                         if(ts.isEmpty())
  17.                                 continue;
  18.                         else
  19.                         {
  20.                                 for(Integer x :ts)
  21.                                 {
  22.                                         sum+=x;
  23.                                 }
  24.                                 if(sum==i)
  25.                                 {
  26.                                         System.out.print(i+": ");
  27.                                         for(Integer x:ts)
  28.                                         {
  29.                                                 System.out.print(x+" ");
  30.                                         }
  31.                                         System.out.println("");               
  32.                                 }
  33.                                 sum=0;
  34.                                 ts.clear();       
  35.                         }
  36.                 }
  37.         }
  38. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. package day16;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import java.util.List;

  8. /*
  9. * 需求:
  10. *                         设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
  11. *                        如28=1+2+4+7+14就是一个完全数。要求:打印需满足以下格式。   
  12. *
  13. *                         A:约数1  约数2  约数3......   例如 6: 1   2   3  
  14. *                        B:约数1  约数2  约数3......         28: 1   2   4   7   14
  15. *                        C:约数1  约数2  约数3......        496: 1   2   4   8   16   31   62   124   248
  16. *
  17.         逻辑分析:
  18.        
  19.                         1.首先要知道该数字的约数是哪几个数字
  20.                         2.做一次判断,判断约数之和是否为这个数字本身.若是,打印
  21.         功能分析:
  22.                         1.新建一个类,此类中共有3个私有方法.和一个公共方法
  23.                         2.方法1用来获取用户输入的数字.
  24.                                 2.1用正则判断该数字是否符合标准,若为否,则提示用户重新输入
  25.                         3.方法2用来获取该数字的所有约数,并存入集合
  26.                                 3.1可以让该数%2,%3,%4,依次类推,若为零,则往集合添加.
  27.                         4.方法3用来迭代集合求和
  28.                         5.方法4对外提供以上所有方法
  29. */
  30. public class ActTest2 {
  31.         public static void main(String[] args) {
  32.                 getNum get = new getNum();
  33.                 get.run();
  34.         }
  35. }

  36. class getNum {
  37.         public void run(){
  38.                 showUnum(GetList(GetNum()), num);
  39.         }
  40.        
  41.         private int num = 0;
  42.        
  43.         private int GetNum() {
  44.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  45.                 String buf = null;
  46.                 String regex = "[1-9][0-9]{0,3}";
  47.                 try {
  48.                         System.out.println("请输入一个数字");
  49.                         while ((buf = br.readLine()) != null) {
  50.                                 if(buf.matches(regex))
  51.                                         return num = Integer.parseInt(buf);
  52.                                 System.out.println("输入了一个非法数字,请重新输入");
  53.                         }

  54.                 } catch (Exception e) {
  55.                         // TODO Auto-generated catch block
  56.                         System.out.println("发生了一个错误,请检查");
  57.                 }
  58.                 finally{
  59.                         try {
  60.                                 br.close();
  61.                         } catch (IOException e) {
  62.                                 // TODO Auto-generated catch block
  63.                                 System.out.println("关闭流失败");
  64.                         }
  65.                 }
  66.                 return -1;
  67.         }
  68.         private List GetList(int num){
  69.                 List list = new ArrayList();
  70.                 int temp  = num - 1;
  71.                 while(temp > 0){
  72.                         if(num%temp == 0)
  73.                                 list.add(temp);
  74.                         temp--;
  75.                 }
  76.                 return list;
  77.         }
  78.         private void showUnum(List list,int num){
  79.                 Iterator it = list.iterator();
  80.                 int temp = 0;
  81.                 int buf = 0;
  82.                 String str = "";
  83.                 String buff = "";
  84.                 while(it.hasNext()){
  85.                         buf = (int)it.next();
  86.                         temp = temp + buf;
  87.                         str = str+buf+"*";
  88.                 }
  89.                 str = str.substring(0, str.length()-1)+"="+num;
  90.                 System.out.println(str);
  91.                 if(temp == num)
  92.                         System.out.println(num+"是一个自身数");
  93.                 else
  94.                         System.out.println(num+"不是一个自身数");
  95.         }
  96. }
复制代码
回复 使用道具 举报
这不是代码,代码我还写不出来,这里我就表达一下菜鸟的思路
设自身数变量为int y=6//因为6是0-9999以内的第一个自身数,我就直接从这里开始好了
设约数变量为int x=1
设一个数组int []arg=int [9999]
两个控制数组的变量 int i=0,int j=0
数组和的变量int sum =0

首先来个外循环,当y<=9999的时候就进入循环,整个循环后y++
   接着内循环,x<y的时候进入循环,循环后x++
      进行判断y%x==0,如果为真就用数组[i]记住x,数组和+=数组[i],i++
          最后再判断是否数组和于y相等,如果相等,就换行打印y并进入最后一个输出循环
              每当j<=i就输出数组[j]\t
        

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1 思路照常给分

查看全部评分

回复 使用道具 举报
本帖最后由 graspDN 于 2013-8-8 14:39 编辑
  1. class yueshu
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int i=1;i<=9999;i++)
  6.                 {
  7.                         int[] arr = new int[i/2];
  8.                         int m=0;
  9.                         for(int j=1;j<i;j++)
  10.                         {
  11.                                 
  12.                                 if(i%j==0)
  13.                                 {
  14.                                         arr[m++]=j;
  15.                                 }
  16.                         }
  17.                         int sum = 0;

  18.                         for(int k=0;k<arr.length;k++)
  19.                         {
  20.                                 sum+=arr[k];        
  21.                         }

  22.                         if(sum == i)
  23.                         {
  24.                                 System.out.print(i+": ");
  25.                                 for(int k=0;k<arr.length;k++)
  26.                                 {
  27.                                         if(arr[k]==0)
  28.                                                 break;
  29.                                         System.out.print(arr[k]+" ");
  30.                                 }
  31.                                 System.out.println("");
  32.                         }

  33.                 }
  34.         }
  35. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.ArrayList;
  2. import java.util.Iterator;

  3. /*
  4. * 设计一个程序是求9999以内的“自身数”,并打印出其所有约数。所谓自身数是指这样的自然数:它的各个约数(不包括该数自身)之和等于该数自身。
  5. 如28=1+2+4+7+14就是一个完全数。要求:打印需满足以下格式。   

  6.                A:约数1  约数2  约数3......   例如 6: 1   2   3  
  7.                B:约数1  约数2  约数3......         28: 1   2   4   7   14
  8.                C:约数1  约数2  约数3......        496: 1   2   4   8   16   31   62   124   248

  9. */

  10. public class Second {
  11.         public static void main(String[] args) {
  12.                
  13.                 for(int x= 1;x<9999;x++) //给number方法传值
  14.                         number(x);
  15.                
  16.         }
  17.        
  18.         public static void number(int num)
  19.         {
  20.                 ArrayList<Integer> arr = new ArrayList<Integer>();        //ArrayList集合用来存放约数
  21.                 int sum=0;//约数的和
  22.                 for(int x=1;x<num;x++) //判断是否是约数
  23.                 {
  24.                         if(num % x==0)
  25.                                 arr.add(x); //如果是添加到集合中
  26.                 }
  27.                
  28.                 Iterator<Integer> it = arr.iterator(); //迭代器
  29.                
  30.                 while(it.hasNext()) //遍历
  31.                 {
  32.                         sum = sum +it.next(); //求和
  33.                         //System.out.print(it.next()+" ");
  34.                 }
  35.                 it=arr.iterator(); //更新迭代器
  36.                 if(sum == num) //如果是自身数则打印该数及其约数
  37.                 {
  38.                         System.out.print(num+": ");
  39.                         while(it.hasNext())
  40.                         {
  41.                                 System.out.print(it.next()+" ");
  42.                         }
  43.                         System.out.println();
  44.                 }
  45.                
  46.                 arr.clear();//清空集合
  47.                
  48.         }
  49. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. public class Wanshu {

  2.          public static void main(String[] args) {
  3.         //定义一个int型变量,用来表示约数和
  4.        int sum;
  5.        //循环遍历1到9999以内的数
  6.        for(int num=1;num<9999;num++){
  7.                   //每遍历一个数都要将约数和置0,否则下一个数的约数和会在加上上一个和
  8.                  sum=0;
  9.                 for(int i=1;i<num;i++){
  10.                        //求出num的约数
  11.                       if(num%i==0)
  12.                       //求约数和
  13.                        sum+=i;
  14.                  }
  15.                //如果该数的约数和等于他本身,就将他的约数打印
  16.               if(sum==num){
  17.                     System.out.print(num+":");
  18.                    for(int j=1;j<num;j++){
  19.                          if(num%j==0)
  20.                                System.out.print(j+"  ");
  21.                   }
  22.                  System.out.println();
  23.               }
  24.          }
  25.      }
  26. }
复制代码
结果:









评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. class  hehe
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int i=2;i<10000;i++)
  6.                 {
  7.                         int a = 0;
  8.                         for(int j=1;j<i;j++)
  9.                         {
  10.                                 if(i%j==0)
  11.                                         a+=j;
  12.                         }
  13.                         if(a==i)
  14.                         {
  15.                                 System.out.print(i+" : ");
  16.                                 for(int j=1;j<i;j++)
  17.                                 {
  18.                                         if(i%j==0)
  19.                                                 System.out.print(j+" ");
  20.                                 }
  21.                                 System.out.println(" ");
  22.                         }
  23.                 }               
  24.         }
  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. class  WanQuanShu
  2. {
  3.        
  4.         public static void main(String[] args)
  5.         {
  6.                 int b;

  7.                 for (int a=2; a<=9999; a++)
  8.                 {
  9.                         int sum = 0;
  10.                         for (b=1; b<a; b++)
  11.                         {
  12.                                 if (a%b==0)
  13.                                         sum = sum + b;
  14.                         }
  15.                         if (a==sum)
  16.                         {
  17.                                 System.out.print(a+": ");
  18.                                 for (b=1; b<a; b++)
  19.                                 {
  20.                                         if (a%b==0)
  21.                                                 System.out.print(b+" ");

  22.                                 }
  23.                                 System.out.println();
  24.                                
  25.                         }
  26.                 }
  27.                
  28.         }
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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