题目: 请编程求出1000 以内的所有完数。
完数:一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"。
java
public static void main(String[] args) {
for (int i = 2; i < 1000; i++) {
int sum=0;
for (int j = 1; j <=i/2; j++) {
if(i%j==0){
sum+=j;
}
}
if (sum==i){
System.out.println(i);
}
}
}
利用双层循环,外层循环作为控制1000以内,内层循环用于控制因子,因为一个数不可能被大于自身一半的数整除,所以条件为 j<=i/
注意: 在第一层循环内要加一个 sum=0 ,每次都要重新求和