一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写一个应用程序求1000之内的所有完数。

解决方案 »

  1.   

     public   class   WanShu   {   
      public   static   void   main   (String   args[])   {   
      int   sum,n,i;   
      for   (n=2;n<=1000;n++)   
      {   
        sum=0;   
      for(i=1;i<=n/2;i++)   
      if   (n%i==0)   sum+=i;   
        if   (sum==n)   
        System.out.println   (n+",");   
      }   
      }   
      }   
      

  2.   


    public class Wanshu { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    for (int i = 1; i <=1000; i++) {
    if (Panduan(i)==i) {
    System.out.println(i);
    }
    }
    }

    public static int  Panduan (int n){
    int sum=0;
    int b=n;
    for (int i = 1; i <=b/2; i++) {
    if (n%i==0) {
    sum+=i;
    }
    }
    return sum;
    }
    }
      

  3.   

        public static int  Panduan (int n){
            int sum=0;
            int b=n;
            for (int i = 1; i <= b/2; i++) {
                if (n%i==0) {
                    sum += (i + n / i);
                }
            }
            return sum;
        }2楼的,我觉得应该改进为:
        public static int  Panduan (int n){
            int sum=0;
            for (int i = 1; i <= sqrt(float(n)); i++) {
                if (n%i==0) {
                    sum+=i;
                }
            }
            return sum;
        }
      

  4.   

    int num,j,sum=0;
    for(num=1;num<=1000;num++)
    {
    for(j=1;j<=num;j++)
    {
    if(num%j==0)
    {
    sum+=j;
    }
    }
    if(num==sum/2)
    {
    printf("%d\n",num);

    }
    sum=0;
    }
      

  5.   

    public class WS {
       public static void main(String[] args) {
       int sum = 0;
       for(int i = 1;i <= 1000;i++) {
      for(int j = 1;j < i;j++) {
           if(i%j == 0){
             sum += j; 
      }
     }
                   if(sum == i) {
             System.out.println(i + "是完数");
                    }
                sum = 0;
        }  }
        }
      

  6.   

    package ya.l5;
            public  class wanshu {
            public  static void main(String [] args) {
             for(int i=1;i<=1000;i++) {
                 int sum=0;
                for(int j=1;j<i;j++) {
                if(i%j==0)
                 sum+=j;
               }
               if(sum==i) {
               System.out.print(i+"是完数因子为:");
                 for(int j=1;j<i;j++) {
                    if(i%j==0)
                     System.out.print( j+",");         
                }  
                    System.out.println();
              }           
           }
        }
    }