/**
-
请输出1000以内的完数
-
完数是它的因子整数的的和,刚好等于数字本身,比如
-
6 = 1 + 2 + 3
-
此时6就称作完成
-
输出格式如下:
-
6 :1 2 3
-
xxxx
*/public class 完数{
public static void main (String[] args){
int[] arr new int[500];
int idx = 0; //记录数组元素的个数
for (int i = 1; i <= 1000; i++) {
int sum = 0;
for (int j = 1; j <= i/2; j++) {
if(i % j == 0){
arr[idx] = j;
idx++;
sum += j;
}
}
if(sum == i){
// 输出完数
System.out.print(i + " : ");
// 输出因子
for (int j = 0; j < idx; j++) {
System.out.print(arr[j] + " ");
}
System.out.println();
}
idx = 0; // indx重置,下来马上就开始保存下一个数字i的所有因子
}
}
}
6 : 1 2 3
28 : 1 2 4 7 14
496 : 1 2 4 8 16 31 62 124 248
Process finished with exit code 0