32 lines
783 B
Python

def all_factor(num):
factors = [1]
sqrt = int(num ** 0.5)
if sqrt ** 2 == num:
factors.append(sqrt)
sqrt -= 1
for x in range(2, sqrt + 1):
if not (num % x):
factors += [x, num // x]
return factors
def get_abundant(limit):
gets = [12]
for x in range(13, limit):
if sum(all_factor(x)) > x:
gets.append(x)
return gets
def get_none_dule_abundant(limit):
factor = get_abundant(limit)
flags = [1] * (limit + 1)
for x in range(len(factor)):
for y in range(x, len(factor)):
s = factor[x] + factor[y]
if s > limit:
break
flags[s] = 0
return [x[0] for x in enumerate(flags) if x[1]]
print(sum(get_none_dule_abundant(28123)))