def divisor(m) :
for i in range(2, int(m**0.5)+1) :
if m%i == 0 and (measure := m//i) <= 10000000 : return measure
return 1 if m > 1 else 0
def solution(begin, end):
return [divisor(x) for x in range(begin, end+1)]
알고리즘
m
이 어떤 수n
의 배수 일 때,n
은m
의 약수다.
따라서 숫자블록 m
에 들어갈 숫자는 m
의 약수 중 m
제외 가장 큰 수 가 된다. 그리고 숫자 블록은 최대 10,000,000
이므로
block[m] = 10000000 보다작은 m의 약수 중 가장 큰 수
가 된다.
def divisor(m) :
for i in range(2, int(m**0.5)+1) :
if m%i == 0 and m//i <= 10000000 : return m//i # 약수(m//i)가 10000000 보다작은지 체크
return 1 if m > 1 else 0
def solution(begin, end):
return [divisor(x) for x in range(begin, end+1)]