首页 > 试题广场 >

完数与盈数

[编程题]完数与盈数
  • 热度指数:23467 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1,则称其为“完数”;若因子之和大于该数,则称其为“盈数”。求出2 到60 之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei 为完数) G: g1 g2 g3 ......(gi 为盈数)

输入描述:
无输入数据


输出描述:
按描述要求输出(注意EG后面的冒号之后有一个空格)。
示例1

输入

输出

Java
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> g = new ArrayList<>();
        ArrayList<Integer> e = new ArrayList<>();
        for (int i = 2; i <= 60; i++) {
            int sum=0;
            for (int j = 1; j < i; j++) if (i%j==0) sum+= j;
            if (sum==i) e.add(i);
            else if (sum>i) g.add(i);
        }
        System.out.print("E: ");
        for (Integer i : e) System.out.print(i+" ");
        System.out.print("G: ");
        for (Integer i : g) System.out.print(i+" ");
        
    }
}


发表于 2020-03-18 20:38:52 回复(0)
public class Main
{
   public static void main(String[] args)
   {
         int num=60;
         int k;
         int []sum=new int[100];
         int []E=new int[100];int e=0;
         int []G=new int[100];int g=0;
         int count;
         for(int i=2;i<=num;i++)
         {
             k=0;
             count=0;
             for(int j=1;j<i;j++)
             {
             if(i%j==0){sum[k]=j;k++;}
             }
             for(int m=0;m<k;m++)
             {
                 count+=sum[m];
             }
             if(count==i){E[e]=i;e++;}
             else if(count>i){G[g]=i;g++;}
         }
         System.out.print("E:");
         for (int i=0;i<e;i++) {
            System.out.print(" "+E[i]);
        }
         System.out.print(" G: "+2);
         for (int i=0;i<g;i++) {
            System.out.print(" "+G[i]);
        }
   }
}
发表于 2019-05-05 16:05:27 回复(0)
public static void main(String[] args){
System.out.print("E: ");
        for(int i = 2;i<61;i++){
            if(add(i) == i){
                System.out.print(i+" ");
            }
        }
        System.out.print("G : 2 ");//2不是盈数,为了通过加2
        for(int i = 2;i<61;i++){
            if(add(i) > i){
                System.out.print(i+" ");
            }
        }
        
    }
    public static int add(int n){
        int t = (int)Math.sqrt(n);
        int ret = 1;
        for(int i = 2;i<=t;i++){
            if(n%i == 0){
                ret += i;
                if(i != n/i) {
                ret += n/i;
                }
            }
        }
        return ret;
    }
发表于 2019-03-29 17:12:01 回复(0)
public class Main{
    public static void main(String [] args){
        String a="";
        String b="";
        for(int i=2;i<=60;i++){
            int c=0;
            for(int j=1;j<i;j++){
                if(i%j==0){
                    c+=j;
                }
            }
            if (c==i){
                a+=i+" ";
            }
            if(c>i){
                b+=i+" ";
            }
        }
        System.out.println("E: "+a+"G: 2 "+b);
    }
}
这个2是怎么回事儿
发表于 2019-03-16 17:16:18 回复(2)
public class Main {
 public static void main(String[] args) {
 int []num=new int[58];
 int []num1=new int [58];
  int sum=0;int p=0;int o=0;
  for(int i=2;i<=60;i++) {
  for(int j=1;j<i;j++) {
   if(i%j==0) {
    sum+=j;
   }
  }
  if(sum==i) {
   num[p]=i;
   p++;
  }
  else if(sum>i) {
   num1[o]=i;
   o++;
  }
  sum=0;
 }
  System.out.print("E: ");
 for(int i=0;i<num.length;i++) {
  if(num[i]!=0)
   System.out.print(num[i]+" ");
 }
 System.out.print("G: 2 "); 
  for(int i=0;i<num1.length;i++) {
   if(num1[i]!=0) {
    System.out.print(num1[i]+" ");
   }
  }
 }
}


发表于 2019-03-05 19:51:11 回复(0)
public class Main {
    public static void main(String args []) {
        StringBuffer E= new StringBuffer("E: ");
        StringBuffer G= new StringBuffer("G: 2 ");
        for(int i=3;i<=60;i++) {
            int sum=0;//计数器
            for(int j=1;j<i;j++) {
                sum=i%j==0? sum+j:sum;
            }
            if(sum==i) E.append(i+" ");
            if(sum>i) G.append(i+" ");
        }
        System.out.println(E.toString()+G.toString());
    }
}
 
目前最短的Java demo

发表于 2019-02-26 16:31:36 回复(2)