https://school.programmers.co.kr/learn/courses/30/lessons/12923#
1) result에 들어가는 값은 자기 자신을 제외한 해당 번호의 최대 약수다.
2) 약수 구하는 알고리즘에서 for문을 2부터 시작하게 두고 가장 먼저 조건에 걸리는 수를 반환하는 함수를 만든다.
2-1) 이 때 최대 10000000번 블록까지 사용한다고 명시되어 있으므로 n // i <= 10000000 결과에 대해서는 1을 반환하게 한다. 10000000을 넘어가는 소수에 대한 도로를 1로 두기 위함이다.
3) begin, end +1만큼 for문을 돌리고 위에 2)에서 만든 함수를 호출한다.
def getMaxDivisor(n):
divisorsList = []
ret = 1
for i in range(2, int(n**(1/2)) + 1):
if n%i == 0 and n//i <= 10000000:
ret = n//i
break
return ret
def solution(begin, end):
answer = []
for i in range(begin, end+1):
if i == 1:
answer.append(0)
continue
answer.append(getMyDivisor(i))
return answer