LeetCode 507. 完美数

对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。

给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False

示例:

输入: 28
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14

注意:

输入的数字 n 不会超过 100,000,000. (1e8)

          没什么太好的方法。。。。。。。。。

    public boolean checkPerfectNumber(int num) {
    	if(num == 1) return false ;
    	int sum = 1 ;
    	for(int i = 2 ; i <= Math.sqrt(num) ; i ++) {
    		int temp = num % i ;
    		int t = num / i ;
    		if(temp == 0) {
    			// 判断两个因子是否相等,如 4的因子2,4/2=2;
    			if(t != i) {
        			sum += i + t ;
        		}else {
        			sum += i ;
        		}
    		}
    	}
		return sum == num;
    }

猜你喜欢

转载自blog.csdn.net/zx2015216856/article/details/81750497
今日推荐