日期:2014-05-20  浏览次数:20643 次

我的问题出现在哪?
/*题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。  
*/
public class Test10 {
public static void main(String[] args) {
int z = 0;
int n = 0;
int i = 2;
int sum = 1;
int m=2;
while(m<=1000){
z = m;
while(i<=m) {
if(m%i == 0) {
sum+=i;
m/=i;
}
else{
i++;
}
}
if(z == sum) {
System.out.print(z+" ");
n++;
if(n%5 == 0) {
System.out.println();
}
}
m++;
i=2;
sum=1;
}
}
}

------解决方案--------------------
LZ的问题在于m的值一直是2
------解决方案--------------------
Java code

package com.sean.csdn;

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

------解决方案--------------------
我想你没搞清楚一个问题,一个数的因子是可以完全整除它的数,然后再理顺下思路去写代码