507. Perfect Number

We define the Perfect Number is a positive integer that is equal to the sum of all its positive divisors except itself.
Now, given an integer n, write a function that returns true when it is a perfect number and false when it is not.

Example:

1
2
3
Input: 28
Output: True
Explanation: 28 = 1 + 2 + 4 + 7 + 14

Note: The input number n will not exceed 100,000,000. (1e8)

解法1:

每一个divisor都有对应的另外一个divisor, 每次找到一个小的divisor之后对应的大的divisor就成为了新的边界,因为不会再出现比大的divisor再大的没遇见的divisor。
C++

1

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Solution {
public boolean checkPerfectNumber(int num) {
int sum = 1;
int i = 2;
int right = num;
while ( i < right) {
if (num % i == 0) {
sum += i;
sum += (num / i); // the other side,
}
right = num / i;
i++;
}
return sum == num && num != 1;
}
}