随机产生一个100以内的整数,如果这个数是完全数,就求1到这个数中所有奇数的和,否则就求1到这个数中所有偶数的和。

摘要:
  完全数(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;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44563573/article/details/103307715