自己的方法,超时了。
public boolean perfect(int num) { List<Integer> list = new ArrayList<Integer>(); int sum = 0; for(int i = 1;i <=num/2;i++) { if(num%i==0) list.add(i); } for(int s : list) { sum+=s; } return sum==num; }别人的方法:
public class Solution {
public boolean checkPerfectNumber(int num) {
if (num == 1) return false;
int sum = 0;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) sum += num / i;
}
}
sum++;
return sum == num;
}
}