정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
strings | return |
---|---|
12 | 28 |
5 | 6 |
입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.
입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.
def solution(n):
return sum([i for i in range(1, n+1) if n%i == 0])
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
에라토네스 체와 비슷하게 반절만 돌려도 문제없습니다. 1을 제외한 가장 작은 약수인 2로 나눈다면 나머지 몫은 정확히 반절, 그외 나머지 약수는 최대 반절을 넘을 수 없으니까요. 저 같은 경우 요소 자기자신을 처치하기 곤란해서 그냥 다돌려버렸는데, num을 따로 빼놓고 계산하는 식으로 간단히 해결했네요.