https://school.programmers.co.kr/learn/courses/30/lessons/77884
import math
def solution(left, right):
result = 0
for num in range(left, right + 1):
if num == 1: # 숫자가 1일 때 약수 = 1
answer = [1]
else:
answer = [1, num] # 1과 자기자신 추가
for i in range(2, int(num ** 0.5) + 1): # 1과 자기자신을 제외한 약수들 구하기
if num % i == 0: # 약수 구하기
answer.append(i)
if num // i != i: # 약수일 경우 거기에 맞는 몫이 i가 아닐 때
answer.append(num // i)
if len(answer) % 2 == 0:
result += num
else:
result -= num
return result
def solution(left, right):
answer = 0
for i in range(left,right+1):
if int(i**0.5)==i**0.5:
answer -= i
else:
answer += i
return answer
제곱수일 때 약수의 개수가 홀수, 제곱수가 아니면 약수의 개수가 짝수이다.
무조건 구하려고 하지 말고 좀 더 생각해봐야겠다.