Perfect Number 完美數
對於一個 正整數,如果它和除了它自身以外的所有正因子之和相等,我們稱它為“完美數”。
給定一個 正整數 n
, 如果他是完美數,返回 True
,否則返回 False
示例:
輸入: 28 輸出: True 解釋: 28 = 1 + 2 + 4 + 7 + 14
注意:
輸入的數字 n
不會超過 100,000,000. (1e8)
思路:首先一個數的除因子(如果不考慮被除和除的關係的話,只用找到開方即可,比如:27,除因子只用找到:根號27=5.3=5,因為對於每一字除因子,都有對應的配對組合,比如:3和9,1和27),這是第一層優化。第二層優化是把這些除因子都加起來(包括自身,因為27/1=27,1和27都是除因子),如果總和sum等於2倍的自身,那麼就是完美數。
參考程式碼:
class Solution {
public:
bool checkPerfectNumber(int num) {
if (num <= 0) return 0;
int sum = 0;
for (int i = 1; i*i <= num; i++) {
if (num%i == 0) {
sum += i;
if (i*i != num) sum += (num / i);
}
}
return sum == 2 * num;
}
};
相關文章
- Leetcode Perfect SquaresLeetCode
- Python Number(數字)Python
- leetcode 掃描線專題 06-leetcode.391 perfect-rectangle 力扣.391 完美矩形LeetCode力扣
- F - Perfect Matching on a Tree
- [LeetCode] 279. Perfect SquaresLeetCode
- LeetCode-507-完美數LeetCode
- Reach a Number 到達終點數字
- HTML input number 數字控制元件HTML控制元件
- CF1603E A Perfect Problem 題解
- 用Swift寫服務端 — Perfect框架Swift服務端框架
- javaScript中Number數字型別方法入門JavaScript型別
- LeetCode65. Valid Number — 判斷合法數字LeetCode
- 分享一種最小 Perfect Hash 生成演算法演算法
- JavaScript Number()JavaScript
- Python - 基本資料型別_Number 數字、bool 布林、complex 複數Python資料型別
- leetcode第九題Palindrome Number 驗證迴文數字LeetCode
- 【轉載】JS Number型別數字位數及IEEE754標準JS型別
- JavaScript Number 物件JavaScript物件
- Leetcode Number of islandsLeetCode
- Kata:Hamming number
- JavaScript Number toLocaleString()JavaScript
- JavaScript Number toString()JavaScript
- Number.NaNNaN
- vue中自定義指令,限制input值為number和小數點的位數Vue
- 一個數number的n次冪 python的pow函式Python函式
- PAT-B 1030 完美數列【二分】
- JS大坑之19位數的Number型精度丟失問題JS
- Serial number lookup for Panasonic
- D. The Number of Imposters
- Big Number hd 1212
- 7.104 ITERATION_NUMBER
- Leetcode 447 Number of BoomerangsLeetCodeOOM
- react input[type='number']React
- number(p,s)(轉)
- Last digit of a huge numberASTGit
- [HNU 10072] Fibonacci Number
- [LeetCode] Third Maximum NumberLeetCode
- [LeetCode] Find the Duplicate NumberLeetCode