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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张智文   /  2013-8-7 12:25  /  4727 人查看  /  33 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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


  8. * */
  9. public class JavaTest {

  10.         /**
  11.          * 思路:1,求自身数  这个数必须是2的倍数
  12.          * 2,自身数要等于自己的约数和 那么将这个数除以2 将除以得到的数相加如果等于这个数 那么这个数就自身数
  13.          * 3,得到自身数后用一个for循环来打印它的约数 约数即是这个数除以2得到的数 前提是这个数能整除2
  14.          * 4,1也是一个自身数 1的约数是1
  15.          */
  16.         public static void main(String[] args) {
  17.                 // TODO Auto-generated method stub
  18.                 System.out.println("10以内的自身数和它的约数为:");
  19.                 getMyNumber();
  20.                
  21.                
  22.         }
  23.         //获取9999以内的自身数以及它的约数
  24.         public static void getMyNumber(){
  25.                 System.out.println(1+":"+1);
  26.                 for(int x=2;x<=9999;x++){
  27.                         int sum =0;
  28.                         for(int y=2;y<=x;y++){
  29.                                 if(x%y==0){
  30.                                         sum += x/y;
  31.                                 }               
  32.                         }
  33.                         if(sum==x){
  34.                                 System.out.print(x+":");
  35.                                 for(int i=2;i<=x;i++){
  36.                                         if(x%i==0)
  37.                                         System.out.print(x/i+" ");
  38.                                 }
  39.                                 System.out.println("");
  40.                         }
  41.                        
  42.                 }
  43.         }
  44. }
复制代码

评分

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

查看全部评分

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

QQ截图20130809012404.jpg (12.54 KB, 下载次数: 24)

QQ截图20130809012404.jpg

评分

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

查看全部评分

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


  3. public class Number {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {

  8.                 int sum = 0;
  9.                 List<Integer> arr= new ArrayList<Integer>(); ;
  10.                 for(int i =1; i < 10000;i++)
  11.                 {       
  12.                         for (int j = 1; j <= i; j++) {
  13.                                 if (i % j ==0) {
  14.                                         arr.add(j);
  15.                                 }
  16.                         }
  17.                         for (int s =0; s<arr.size()-1;s++) {
  18.                                
  19.                                 sum+=arr.get(s);
  20.                         }
  21.                         if (sum==i&& i!=0) {
  22.                                
  23.                                 System.out.print(sum+":");
  24.                                 for (int s =0; s<arr.size()-1;s++) {
  25.                                        
  26.                                         System.out.print("  "+arr.get(s));
  27.                                 }
  28.                                 System.out.println();
  29.                         }
  30.                         sum = 0;
  31.                         arr.clear();
  32.                 }
  33.                
  34.                

  35.         }

  36. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
  1. package com.itcast.mapTest;
  2. import java.util.*;
  3. public class CollSelfNum {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                 /*
  7.                  * A:约数1  约数2  约数3......   例如 6: 1   2   3   
  8.                  */
  9.                 for(int k = 2 ; k <= 9999; k++){
  10.                         prinSelfArr(k);                               
  11.                 }       
  12.         }
  13.         public static void prinSelfArr(int num){
  14.                 Set<Integer> arrSet = new TreeSet<Integer>();//建立TreeSet集合,用来存放整数
  15.                 for(int i = 1; i < num; i++){
  16.                         for(int j = i+1; j <= num; j++){  
  17.                                 if(num == i*j ){    //判断两个数之积是否满足条件
  18.                                         arrSet.add(i);
  19.                                         arrSet.add(j);
  20.                                 }
  21.                         }
  22.                 }
  23.                 arrSet.remove(num);   //移除 num这个数,方便计算其它所有数的和
  24.                
  25.                 //计算所有除去num后的约数之和
  26.                 int sum = 0;
  27.                 for(Integer x: arrSet){
  28.                         //System.out.print(x+"  ");
  29.                         sum += x;
  30.                 }
  31.                 if(sum == num){       //判断约数之和与num是否相等
  32.                         System.out.print(num+": ");
  33.                         for(Integer x: arrSet){   //for循环输出集合中num的约数
  34.                                 System.out.print(x+"  ");
  35.                         }
  36.                         System.out.print(num+"\r\n");
  37.                 }               
  38.         }
  39. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报

老田..你还是实习版主?
回复 使用道具 举报
本帖最后由 陈贺 于 2013-8-9 17:13 编辑
  1. <p> </p><div class="blockcode"><blockquote>package com.itheima;


  2. public class Test {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 for(long i=6;i<9999;i++){
  8.                         long x = 0;
  9.                         for(long y=1;y<i;y++){
  10.                                 if(i%y==0){
  11.                                        
  12.                                         x+=y;
  13.                                 }       
  14.                         }       
  15.                         if(x==i){
  16.                                 System.out.print(i+":");
  17.                                 for(long y=1;y<i;y++){
  18.                                         if(i%y==0){
  19.                                                 System.out.print(" "+y);       
  20.                                         }       
  21.                                 }
  22.                                 System.out.println();
  23.                         }
  24.                 }
  25.         }
  26. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 罗广伟 于 2013-8-9 17:33 编辑
  1. import java.util.*;
  2. public class SelfNumber {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int x=1;x<9999;x++)//遍历0-9999
  6.                 {
  7.                         List<Integer> al=new ArrayList<Integer>();//定义集合用于存储x的约数
  8.                         for(int y=1;y<x;y++)//取出x的约数,并存到集合
  9.                         {
  10.                                 if(x%y==0)
  11.                                         al.add(y);
  12.                         }
  13.                         int sum=0;
  14.                         for(int z=0;z<al.size();z++)//将x约数进行相加
  15.                         {
  16.                                 sum=sum+al.get(z);
  17.                         }
  18.                         if(x==sum)//判断约数和和自身是否相等
  19.                         {
  20.                                 System.out.println(x+":"+getElements(al));
  21.                         }
  22.                         
  23.                 }
  24.         }
  25.         public static StringBuffer getElements(List al)//将中括号去掉
  26.         {
  27.                 Iterator<Integer> it=al.iterator();
  28.                 StringBuffer sb=new StringBuffer();
  29.                 while(it.hasNext())
  30.                 {
  31.                         sb.append(" "+it.next());
  32.                 }
  33.                 return sb;
  34.         }
  35. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
import java.util.*;
public class ZiShenShu
{
        public static void main(String[] args)
        {
                ArrayList al = new ArrayList();

                for (int i=2;i<10000 ;i++ )
                {
                        int tmp=0;
                        for(int j=1;j<i;j++)
                        {
                                if (i%j==0)
                                        tmp+=j;                               
                        }
                        if(i==tmp)
                        {
                                al.add(new Integer(i));
                        }
                }
                Iterator it = al.iterator();
                while(it.hasNext())
                {
                        Integer intObj=(Integer)it.next();
                        int c=intObj.intValue();
                        System.out.print(c+":"+"\t");
                        for (int j=1;j<c ;j++ )
                        {
                                if(c%j==0)
                                        System.out.print(j+"   ");
                        }
                        System.out.println();
                }
        }
}

评分

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

查看全部评分

回复 使用道具 举报
  1. /**
  2. 1、在循环中找出自身数
  3. 2、打印自身数及其约数
  4. */
  5. public class Demo
  6. { //找出自身数
  7. public static void findNum()
  8. {
  9. for(int j = 2 ; j<=9999 ; j++)
  10. {
  11. int temp = 0 ;
  12. for(int i = 1 ; i<j ; i++)
  13. {
  14. if(j%i == 0)
  15. temp += i ;
  16. }
  17. if(temp == j)
  18. print(j) ;
  19. }
  20. }

  21. //按照格式打印自身数
  22. public static void print(int x)
  23. {
  24. System.out.print(x + ": ") ;
  25. for(int i = 1 ; i<x ; i++)
  26. {
  27. if(x%i == 0 )
  28. System.out.print(i + " ") ;
  29. }
  30. System.out.println() ;
  31. }
  32. public static void main(String[] args)
  33. {
  34. findNum() ;
  35. }
  36. }
复制代码

评分

参与人数 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. }
复制代码

评分

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

查看全部评分

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

  2. public class FreeNumber {

  3.         public static void main(String[] args) {
  4.                 // TODO 自动生成方法存根
  5.                 //声明max为所要求的最大值范围。
  6.                 int max = 9999;
  7. //                调用函数,并打印结果。
  8.                 getFreeNumber(max);
  9.         }
  10. //定义函数,求得所给范围内的“自身数”。
  11.         public static void getFreeNumber(int max) {
  12.                 for (int m = 2; m <= max; m++) {
  13.                         String str = m + ":\t";
  14.                         int sum = 0;
  15.                         int mid = m/2 +1;
  16.                         //因为一个数肯定不能被他的一半mid以后的数整除,所以循环到mid就可以。
  17.                         for (int n = 1; n < mid; n++) {
  18.                                 if (m % n == 0) {
  19.                                         sum += n;
  20.                                         str = str + n + "\t";
  21.                                 }
  22.                         }
  23.                         if (m == sum)
  24.                                 System.out.println(str);
  25.                 }
  26.         }

  27. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int i=1; i<9999; i++)
  6.                 {
  7.                         int sum=0;
  8.                         int j;
  9.                         for(j=1; j<i; j++)
  10.                         {
  11.                                 if(i%j==0) //判断出约数
  12.                                 {
  13.                                         sum += j;        //求出约数之和
  14.                                 }
  15.                         }
  16.                         if(sum == i)        //判断约数之和是否与数字本身相同
  17.                         {
  18.                                 System.out.print(sum + ":" );//打印自身数
  19.                                 for(int z=1; z<=sum/2; z++)//打印约束
  20.                                 {
  21.                                        
  22.                                         if(sum%z==0)
  23.                                         {
  24.                                                 System.out.print(z + "  ");
  25.                                         //System.out.println();
  26.                                         }
  27.                                 }
  28.                                 System.out.println();
  29.                         }
  30.                 }
  31.         }
  32. }
复制代码

评分

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

查看全部评分

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