103、完美數
阿新 • • 發佈:2018-12-23
對於一個 正整數,如果它和除了它自身以外的所有正因子之和相等,我們稱它為“完美數”。
給定一個 正整數 n, 如果他是完美數,返回 True,否則返回 False
示例:
輸入: 28
輸出: True
解釋: 28 = 1 + 2 + 4 + 7 + 14
注意:
輸入的數字 n 不會超過 100,000,000. (1e8)
思路很簡單,除了本身和其餘,注意的是1應該返回false,並且迴圈範圍可以縮小點
class Solution { public boolean checkPerfectNumber(int num) { if(num == 1 || num == 0){ return false; } if(num == 2 || num == 3 || num == 4){ return false; } int tem = num * 2; for (int i = 1; i * i < num ; i++) { if(num % i == 0){ int j = num / i; tem = tem - j - i; if(tem < 0 ){ break; } } } if(tem == 0){ return true; }else { return false; } } }
效率還挺高的
排行靠前的程式碼
class Solution {
public boolean checkPerfectNumber(int num) {
return num==6||num==28||num==496||num==8128||num==33550336;
}
}
其實這個程式碼利用的是
這樣就可以直接判斷是不是了,給出了一個優化的思路,哈哈哈哈
1e8以內只有5個完美數