首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "例如6=1+2+3.编程 找出1000以内的所有完数。该如何解决

2012-03-28 
题目:一个数如果恰好等于它的因子之和,这个数就称为 完数 。例如61+2+3.编程找出1000以内的所有完数。问

题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
问题出在哪儿了?求大家帮忙,我是在找不到了,该怎么改进,在线等=====

Java code
/*题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程   找出1000以内的所有完数。   */public class End1{    public static void main(String[]args){        for(int i = 0;i<=1000;i++){            int arr[] = new int[i];            for(int j = 1;j < i;j++){                if(i%j == 0){                    int k = 0;                    arr[k] = j;                    k++;                }            }            int temp = 0;            for(int m = 0; m<arr.length;m++){                temp += arr[m];            }            if(i == temp){                System.out.print(i+" ");            }        }    }}


[解决办法]
public class End1{
public static void main(String[]args){
for(int i = 0;i<=1000;i++){
int arr[] = new int[i];
int k = 0;
for(int j = 1;j < i;j++){
if(i%j == 0){
arr[k] = j;
k++;
}
}
int temp = 0;
for(int m = 0; m<arr.length;m++){
temp += arr[m];
}
if(i == temp){
System.out.print(i+" ");
}
}
}
}


[解决办法]
int k = 0;放在for(int j = 1;j < i;j++)这个循环前面,你每次都先k=0,改变的一直都是arr[0],数组其他值也一直是0
[解决办法]
这个比较简单
Java code
public class End1{    public static void main(String[]args)     {        for(int i = 0;i<=1000;i++)            {             int s=0;             for(int j = 1;j < i;j++)               {                if(i%j == 0)                    {                 s+=j;                                      }                }             if(s==i)                {                System.out.print(i+" ");                }            }        }} 

热点排行