09. Python(완전수 찾기)
09. Python(완전수 찾기)
[toc]
벌집
문제
제출
1
2
3
4
5
6
7
8
9
10
11
12
while True:
a = int(input())
if a == -1:
break
a_list = [i for i in range(1, a) if a % i == 0]
if sum(a_list) == a:
# print(f'{a} = {" + ".join(map(str, a_list))}')
print(a, '=', ' + '.join(str(i) for i in a_list))
else:
# print(f'{a} is NOT perfect')
print(a, "is NOT perfect.")
1
2
3
4
5
# 입력
6
12
28
-1
1
2
3
4
# 출력
6 = 1 + 2 + 3
12 is NOT perfect.
28 = 1 + 2 + 4 + 7 + 14
인사이트
- 자연수 n의 약수 중 n을 제외한 약수의 합이 n과 같을 때 n을 완전수라고 함
- 코드 설명
- -1이 입력될 때 프로그램이 중지되는 것을 확인하고, 이를 처리하기 위해 while문을 사용해야 한다는 것을 깨달았음
- 자연수 a의 약수를 구해서 a_list에 저장하기 위해 for문과 if문을 사용했음
- 이후, a_list의 합이 a와 같아야 완전수이기 때문에 완전수임을 확인하고 그 약수를 출력하기 위해 조건문을 사용했음
- 그러나, print(a, ‘=’, ’ + ’.join(str(i) for i in a_list)) 문법을 생각하지 못해 최종 완성에 어려움을 겪었음
- print문의 사용법과 join 함수, 그리고 for문의 활용을 좀 더 연습해야 할 필요성을 느꼈음