@timer
def solve_by_product(abundants, lim):
result = list(range(lim))
for i in abundants:
for j in abundants:
if i + j < lim:
result[i + j] = 0
return sum(result)
@timer
def solve_by_product(abundants, lim):
result = list(range(lim)) # изначально все числа - кандидаты в нераскладываемые
others = [] # здесь будем копить варианты второго слагаемого
for i in abundants:
others.append(i) # случай i + i должен быть учтен в этом же цикле
for j in others:
j += i
if j >= lim: # выход за пределы диапазона
break # в others числа по нарастающей, остальные заведомо больше
result[j] = 0
return sum(result)
print(solve_by_product(Abundants, N)) # тут время второго и результат
@timer
def get_abundants(limit: int):
dividers = [1] * limit
for i in range(2, limit // 2 + 1):
for j in range(i * 2, limit, i):
dividers[j] += i
return [i for i in range(12, limit) if i < dividers[i]]
@timer
def solve_by_set(abundants: list, limit: int):
abundants_set = set(abundants)
return sum(i for i in range(1, limit) if all(i - j not in abundants_set for j in abundants))
N = 28124
Abundants = get_abundants(N) # тут имеем время первого этапа
print(solve_by_set(Abundants, N)) # тут время второго и результат
def solve_by_set(abundants, lim):
abundants_set = set(abundants)
return sum(i for i in range(1, lim) if all(i - j not in abundants_set for j in abundants))
Допустим, в таблице заполнены все поля всех записей, тогда каждую строку можно разобрать в лист так:
l = "bla-bla-bla".split("") и взять поле по индексу. Но что делать, если в некоторых текстовых полях NULL (он без кавычек)? Если в заменяемом поле NULL или отсутствующее в словаре значение?