[백준] 9506 약수들의 합 Python

2024. 6. 21. 02:16Python/백준

https://www.acmicpc.net/problem/9506

 

📝  문제

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 
예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.
n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

 

🔎  풀이

먼저 입력 받은 수의 모든 약수를 구한 뒤 리스트에 저장해준다.

이후 약수의 합이 입력받은 수와 일치할 때, 리스트에 저장된 수를 하나씩 꺼내 출력한다.

일치하지 않는 경우 완전수가 아니라는 출력문을 출력한다.

 

💻  코드

while True:
    n = int(input())
    if n == -1:
        break

    i = 1
    sum = 0
    nums = []
    while i < n:
        if n % i == 0:
            nums.append(i)
            sum += i
        i += 1
    if sum == n:
        print("%d = " % n, end = "")
        for i in nums:
            if i != nums[-1]:
                print("%d + " % i, end = "")
            else:
                print(i)
    else:
        print("%d is NOT perfect." % n)