本文目錄
- leetcode每日一題507. 完美數 2021已去 希望你完美如歸
- 寫在前面
- 題目
- 示例
- 提示
- 思路
- 代碼實作
- 執行結果
- 寫在最后
leetcode每日一題507. 完美數 2021已去 希望你完美如歸
寫在前面
今天就是2021年的最后一天啦,那小付在這里就提前祝大家新年快樂了哦~ 如題 愿你完美如歸!
題目
- 完美數
對于一個 正整數,如果它和除了它自身以外的所有 正因子 之和相等,我們稱它為 「完美數」,
給定一個 整數 n, 如果是完美數,回傳 true,否則回傳 false
示例
示例1:
輸入:num = 28
輸出:true
解釋:28 = 1 + 2 + 4 + 7 + 14
1, 2, 4, 7, 和 14 是 28 的所有正因子,
示例2:
輸入:num = 6
輸出:true
示例3:
輸入:num = 496
輸出:true
提示
1 <= num <= 10^8
思路
數學問題 數學方法解決~
因為一個數的正因數總是成對出現的所以咱們只需要找到它對應的上邊界即可了~
即:
1<= i <=
n
u
m
\sqrt num
n
?um
所以咱們就可以接著進行遍歷了
因為這里會呼叫到sqrt函式 所以咱們可以對其進行稍加修改
i <=
n
u
m
i
\frac{num}{i}
inum?
這里找到的i是代表較小的正因數 而 num / i 獲得的是與其當前 i 相乘的另一個正因數
代碼實作
class Solution {
public boolean checkPerfectNumber(int num) {
//初始化結果值
int res = 1 ;
// 從2開始進行列舉
for (int i = 2;i<= num/i;i++){
//如果當前這個數是其正因數則將結果加入
if (num % i == 0){
res += i;
//將i和num/i都累計求和即可,
//注意:完全平方數的開根因子只能加一次,
if (i * i != num) res += num/i;
}
}
return res == num;
}
}
執行結果

寫在最后
雙百成功收尾掉2021年的最后一天
愿每位正在學習與奮斗的人都能完美如歸 靜待2022年的到來
這里是小付 打卡2021-12-31
最后
每天進步點 每天識訓點
愿諸君 事業有成 學有所獲
如果覺得不錯 別忘啦一鍵三連哦~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400464.html
標籤:其他
