코딩테스트

[프로그래머스][Python] 약수의 개수와 덧셈 (약수의 개수가 짝수인지 홀수인지 판별하기)

EEEUN 2022. 10. 7. 18:58

 

import math

def solution(left, right):
    answer = 0
    for i in range(left, right+1) :
        sqrt = math.sqrt(i)
        if int(sqrt) == sqrt :
            answer -= i
        else :
            answer += i
    return answer

 

제곱수는 약수의 개수가 홀수이고, 제곱수를 제외한 모든 수는 약수의 개수가 짝수이다.

ex) 9의 약수의 개수 : 3개, 6의 약수의 개수 : 4개

 

n의 제곱근을 구하고 int(제곱근)와 제곱근이 같다면, n은 제곱수이다. 그렇다면 n의 약수의 개수는 홀수라는 것을 알 수 있다.