问题出在哪儿了?求大家帮忙,我是在找不到了,该怎么改进,在线等=====
- 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+" "); } } }}