Как повысить эффективность алгоритма проверки чисел по гипотезе Коллатца?

Я написал такой код:

import time

mas = set()

def ThreeNPlusOne(n):
    while n > 1 and n not in mas:
        if n % 2 == 0:
            n //= 2
        else:
            n = 3 * n + 1
            n //= 2
        mas.add(n)
    return True

startTime = time.monotonic() #Начальное время

for i in range(1, 10**7):
    ThreeNPlusOne(i)
print("done.")

print(time.monotonic() - startTime) #Вычетаем из текущего времени начальное

Тут я использую множество и добавляю туда повторы, каждый раз проверяю наличие числа n в этом множестве, а можно ли как-нибудь ещё оптимизировать этот алгоритм на python?


Ответы (0 шт):