약수들의 합
import sys
def main():
input = sys.stdin.readline
while True:
n = int(input())
if n == -1:
break
divisors = []
for i in range(1, n):
if n % i == 0:
divisors.append(i)
if sum(divisors) == n:
print(f"{n} = {' + '.join(map(str, divisors))}")
else:
print(f"{n} is NOT perfect.")
main()
어떤 수가 자기 자신을 제외한 모든 약수들의 합과 같으면 그 수를 완전수라고 합니다. 따라서 $1$부터 $n-1$까지의 수 중에서 $n$의 약수들을 리스트에 담고, 그 합이 $n$과 같은지 확인하면 됩니다. $n$을 제외해야 한다는 점과 출력 형식에 유의하며 구현하면 해결할 수 있습니다.
댓글