怎么用java语言求1000内的完数,请大侠们加上解释语句,我是新手了。网上看了好几种方法,不中。

解决方案 »

  1.   


    public class Perfect {
    public static void main(String[] args){
    int r,j,i; 
    for(i=1; i<1000; i++){//1000内的完数
    r = 0;
    for(j=1; j<i; j++){//找i的因子
    if(i%j == 0){
    r = r + j;//将i的因子相加
    }
    }
    if(r == i){//等于除它本身外的因子之和
    System.out.println(r);
    }
    }

    }}
      

  2.   


    public class TestEndOfAFew {
        public static void main(String[] args) {
    System.out.println("1000以内的完数有:");
    for (int i = 1, sum = 0; i <= 1000; i++) {//遍历1...1000
        sum = 0; // 存放所有因子的和,初始化为0
        int maxFactor =  i/2;//最大因子 是一个数的一半
        for (int j = 1; j <= maxFactor; j++) //遍历所有可能的因子
    if (i % j == 0)//确定j是i的因子
        sum += j;//累加因子和
        if (sum == i)//判断是否为完数
    System.out.print(i + "  ");
    }
        }
    }