完美数

问题:如果一个正整数恰好等于除了它本身以外的所有因子之和,则称该数为完美数,比如6=1+2+3,所以6就是一个完美数。请计算10000内的所以完美数之和,包含10000本身。

public static void main(String[] arg) {
        int sum=0;
         for (int i = 1; i <= 10000; i++) {    
                int temp = 0;// 定义因子之和变量  
                for (int n = 1; n <i/2+1; n++) {  //注意:n<=Math.sqrt(i)是错误的写法,这和素数是不一样的
                    if (i % n == 0) {  
                        temp += n;// 能被整除的除数则被加到temp中  
                    }  
                }  
                if (temp == i) {// 如果因子之和与原数相等的话,说明是完数  
                    sum+=i;// 求出总和
                }  
         }  
         System.out.println(sum);
}

 

posted @ 2017-03-31 13:21  行动派  阅读(355)  评论(0编辑  收藏  举报