https://school.programmers.co.kr/learn/courses/30/lessons/12928
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
n은 0 이상 3000이하인 정수입니다.
def solution(n):
return sum([i for i in range(1, n+1) if n%i==0])
말그대로 약수의 합을 더하면 됨
num / 2 의 수들만 검사하면 성능 약 2배 향상
천잰데?
예를들어 num이 12면 절반인 6의 약수들(1, 2, 3, 6) 검사한 다음에 12를 더해버리면 그만이다.
대박이당..ㄷㄷ
num//2
보다 num\**0.5
가 더 낫다는 얘기도 있다.
예를들어 num이 16이면 4의 약수들(1,2,4)검사한 다음에 16을 더하면 된다.
=>그런데 num이 제곱수가 아니면 검사를 못하는데? if int(num**0.50) == num**0.5
와 같은 예외처리가 필요해보인다.
아무튼 제곱수에 대해서는 빠른 처리를 할 수 있겠다.
뭐지 수학 천재들인가