
아래 백준 로고를 클릭하면 해당 문제로 이동합니다 😀
일단 for문을 range(1, n // 2 + 1)로 설정해서 N을 나눴을 때 나머지가 없는 수만 리스트에 저장한다. n//2 + 1로 해준 이유는 어차피 약수는 n//2보다 큰 수가 없기 때문이다.
그리고 리스트 안에 요소를 다 더했을때 n과 같다면 리스트의 요소를 출력하게 했고, 그게 아닌경우는 is NOT perfect를 출력한다.
📢 참고 : print(*arr) : arr 리스트 요소 한번에 출력
import sys
while True:
n = int(sys.stdin.readline())
if n == -1:
break
divisor = []
for i in range(1, n // 2 + 1):
if n % i == 0:
divisor.append(i)
if sum(divisor) == n:
print(n, '=', end = ' ')
print(*divisor, sep = ' + ')
else:
print(n, 'is NOT perfect.')
