public class PerfectNumber {
/**
* 求1-100之间,有哪些数是完数。
* 【完全数(Perfect number)又称完美数或完备数,是一些特殊的自然数。
* 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
* 例如:6=1+2+3】
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("100以内的完数有:");
printComNum(100);
}
static void printComNum(int n){
//需要计算100以内的完数 范围就是<n
//把i看做预订的完美数
for (int i = 1; i < n; i++) {
//用于存储完美数因子的和
int sum = 0;
//所有完美数的因子都有1 肯定不能为0 所以从1开始
//范围是<i 完美数定义:除它本身外的所有因子之和等于它本身
//所以循环到小于它的前一个数循环就结束了
for (int j = 1; j < i; j++) {
//如果数对j取余等于0 说明j是它的因数
if(i%j==0){
//是i的因数的话 sum+j
sum+=j;
}
}
//上一个循环结束后 sum存储了i的所有因子的和
//如果i=sum 那么说明它是完美数
if(i==sum){
System.out.println(i);
}
}
}
}