https://programmers.co.kr/learn/courses/30/lessons/12923


def odd_max_factor(odd):

    x = 3

    while x * x <= odd:

        if odd % x == 0:

            return odd // x

        x += 2

    return 1


def solution(begin, end):

    answer = [i >> 1 for i in range(begin, end + 1)]

    for i in range(not begin & 1, len(answer), 2):

        answer[i] = odd_max_factor((answer[i] << 1) + 1)

    if begin == 1:

        answer[0] = 0

    return answer