728x90
반응형
https://www.acmicpc.net/problem/9506
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
문제 해결
- 완전수의 가장 클 수 있는 약수는 n%2==0일 때 n//2
- 따라서 1부터 n//2+1까지 for문을 통해 나눠 떨어지는 수를 찾는다.
- 더해서 n이 나오면 완전수이다. 표현은 n,=은 각각 sep=' '로 출력하고 ' + '.join을 통해 더하기를 표현할 수 있다.
- 아니면 N is NOT perfect. 나오도록 출력
CODE
import sys
input = sys.stdin.readline
while True:
n = int(input())
if n == -1:break
ans = []
for i in range(1,n//2+1):
if n%i ==0:
ans.append(i)
if n == sum(ans):
print(n,'=',' + '.join(map(str,ans)),sep=' ')
else:
print(n, 'is NOT perfect.', sep=' ')
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2810 컵홀더 (0) | 2023.03.17 |
---|---|
[python] 백준 2212 센서 (0) | 2023.03.17 |
[python] 백준 10825 국영수 (0) | 2023.03.16 |
[python] 백준 2812 크게 만들기 (0) | 2023.03.16 |
[python] 백준 3109 빵집 (0) | 2023.03.16 |
댓글