Home Perfect Number
Post
Cancel

Perfect Number

Leetcode Problem

Perfect Number

자기 자신을 제외한 모든 약수의 합이 자신과 같아지는 Perfect Number인지를 판별하는 문제입니다.

1
2
3
4
5
6
7
class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        n = 1
        for i in range(2, int(num ** (1/2) + 1)):
            if num % i == 0:
                n += i + num//i
        return n == num if num > 1 else False

약수는, 하나의 약수와 원래 수에서 그 약수를 나눈 수와 쌍을 이룹니다. \(\sqrt{num}\)와 쌍을 이루는 약수는 \(\sqrt{num}\) 그 자신이므로 \(\sqrt{num}\)까지 순회를 하면서 약수를 찾으면 모든 약수를 구할 수 있습니다.





참고

This post is licensed under CC BY 4.0 by the author.