알고리즘/[python] 백준 BOJ

[python] 백준 9506 약수들의 합

Alan_Kim 2023. 3. 16. 20:57
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
반응형