uju's Tech

[Baekjoon : Python]약수들의 합 : 9506 본문

Baekjoon

[Baekjoon : Python]약수들의 합 : 9506

ujusy 2020. 8. 1. 00:38

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

약수들의 합 : 9506


사용언어: python

문제

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.

예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.

n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

입력

입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2 < n < 100, 000)

입력의 마지막엔 -1이 주어진다.

출력

테스트케이스 마다 한줄에 하나씩 출력해야 한다.

n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다(예제 출력 참고).

이때, 약수들은 오름차순으로 나열해야 한다.

n이 완전수가 아니라면 n is NOT perfect. 를 출력한다.

Think

  • i번 순환하면서 i로 나눈 것의 나머지가 0이면 리스트에 추가하고.
  • 모두 순환 후 합이 해당 원소와 같으면 + 로 출력 . 아니면 is NOT PERFECT 출력.

Code

메모리 : 29380 kb
시간: 84ms

import sys

myList = []
checkList = []
col = []
while True:
    a = int(sys.stdin.readline())
    if a == -1:
        break
    myList.append(a)

for item in myList:
    col = []
    for i in range(1,(item)):
        if (item % i) == 0:
            col.append(i)
    if sum(col) == item:
        print(str(item)+ ' = ' + ' + '.join(map(str,col)))
    else:
        print(str(item) + ' is NOT perfect.')

 

Comments