原题:
如果有两个数,每一个数的所有约数(除它本身以外)的和正好等于另一个数,则称这两个数为互满数,求出3000以内的所有互满数并输出。
比如284的约数有1、2、4、71、141、284除了其本身之外和为220
220的约数为1、2、4、5、10、11、20、22、44、55、110、220除了本身220之外和为284;
称220和284为互满数
代码实现
public class 约数 {
public static int DivisoSum(int a) {
int b = 1;
int sum = 0;
while(b < a){
if(a % b == 0){
sum += b;
}
b += 1;
}
return sum;
}
public static void main(String[] args) {
int i,j;
for(i = 0;i < 3000;i++) {
j = DivisoSum(i);
if(DivisoSum(j) == i && i > j){
System.out.println(i + " " + j);
}
}
}
}