from time import time, sleep
def timer(f):
def wrapper(*args, **kwargs):
t, res = time(), f(*args, **kwargs)
print(f"{f.__name__}, sec: {time() - t:f}")
return res
return wrapper
@timer
def slow_func(t):
sleep(t)
return 'I`m finish!'
print(slow_func(1))
удаление собственного комента не избавит от наказания за флуд
А если вам тут всё не нравится, зачем флудить?
Просто избавьте от своего присутствия.
def final(N):
sum_of_dividers = [1] * N # все числа делятся на 1, проходили уже
for i in range(2, N // 2 + 1): # начнем делители с двойки
for j in range(i * 2, N, i): # ко всем ячейкам с адресом,
# кратным i но большим, чем i,
sum_of_dividers[j] += i
result = list(range(N)) # изначально все числа - кандидаты в нераскладываемые
others = [] # здесь будем копить варианты второго слагаемого
sum_of_dividers[0] = 0 # заглушим чтоб ноль не пролазил через if i < s
for i, s in enumerate(sum_of_dividers):
if i < s: # i избыточное
others.append(i) # случай i + i должен быть учтен в этом же цикле
for j in others:
j += i
if j >= N: # выход за пределы диапазона
break # в others числа по нарастающей, остальные заведомо больше
result[j] = 0
return sum(result)
Dazai, создать 2 функции, первая принимает N и возвращает список избыточных меньше N, вторая принимает его и N и возвращает итоговую сумму