题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
public static void main(String[] args) {
/**
* 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
*/
int sum;
int[] arr ={ };//声明一个数组
for(int i =1;i<=1000;i++){
sum=0;
for(int j = 1;j<i/2+1;j++){//因子不可能大于一半加1,最多是一半
if((i%j)==0){
sum+=j;
}
}
if(sum==i){//扩容加赋值
arr= Arrays.copyOf(arr,arr.length+1);
arr[arr.length-1] = i;
}
}
for(int i = 0;i<arr.length;i++){//打印所有数组
System.out.println(arr[i]);
}
}
输出是:
注意:
0和1 不是完数,完数不算本身