摘要:
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。
如果一个数恰好等于它的因子之和,则称该数为“完全数” 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
例如:
第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。
后面的完全数还有8128、33550336等等。
示例代码:
package com.gx.demo;
public class Test1 {
public static void main(String[] args) {
//首先生成 1-100 随机数;Math.random():随机生成一个0-1(不包括1)的小数
// int num = (int) (Math.random()*100);
//测试完数(100以内的完全数只有6和28)
int num = 6;
System.out.println("随机数为\t"+num);
//然后判断这个数是否是完数
boolean bol = isPerfectNumber(num);
//如果是完数求1到这个数的所有奇数和
if (bol){
int oddNumSum = oddNumberSum(num);
System.out.println("奇数和\t"+oddNumSum);
}else {
//如果不是完数则求偶数和
int evenNumSum = evenNumberSum(num);
System.out.println("偶数和\t"+evenNumSum);
}
}
//判断是否是完全数
public static boolean isPerfectNumber(int num){
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0){//只有1、2、3、6(i < num;不等于,舍去)满足
sum += i;
}
}
//例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
return sum == num;
}
//奇数求和
public static int oddNumberSum(int num){
int sum = 0;
for (int i = 1; i <= num; i++) {
if (i %2 != 0){
sum += i;
}
}
return sum;
}
//偶数求和
public static int evenNumberSum(int num){
int sum = 0;
for (int i = 1; i <= num; i++) {
if (i %2 == 0){
sum += i;
}
}
return sum;
}
}