leetcode 507. 完美数(Java版)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 507. 完美数(Java版)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
https://leetcode-cn.com/problems/perfect-number/
題解
枚舉 n 的所有因數(shù),并計(jì)算它們的和。(或者逆向思路:枚舉 n 的所有因數(shù),用 n 分別減去這些因數(shù),看最終是否為 0)
在枚舉時(shí),我們只需要從 1 到 sqrt(n) 進(jìn)行枚舉即可。這是因?yàn)槿绻?n 有一個(gè)大于 sqrt(n) 的因數(shù) x,那么它一定有一個(gè)小于 sqrt(n) 的因數(shù) n/x
注:如果遍歷從 1 到 n,或者遍歷 n/2 的話(huà),都會(huì)超時(shí)。所以必須從 1 到 sqrt(n)。
public class Solution {public boolean checkPerfectNumber(int num) {int sum = num;for (int i = 1; i < Math.sqrt(num); i++) {if (num % i == 0) {sum -= i;if (i != 1) sum -= (num / i);}if (sum < 0) return false;}return sum == 0;} }總結(jié)
以上是生活随笔為你收集整理的leetcode 507. 完美数(Java版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: leetcode 506. 相对名次(J
- 下一篇: leetcode 509. 斐波那契数(