Improved project structure.
This commit is contained in:
40
python/e023.py
Normal file
40
python/e023.py
Normal file
@@ -0,0 +1,40 @@
|
||||
import math
|
||||
|
||||
|
||||
def get_proper_divisors(n):
|
||||
proper_divisors = set([1])
|
||||
for i in range(2, int(math.sqrt(n)) + 1):
|
||||
if n % i == 0:
|
||||
proper_divisors.add(i)
|
||||
proper_divisors.add(n / i)
|
||||
return proper_divisors
|
||||
|
||||
|
||||
def is_abundant(n):
|
||||
return sum(get_proper_divisors(n)) > n
|
||||
|
||||
|
||||
def get_abundant_numbers_smaller(n):
|
||||
ret = []
|
||||
for i in range(1, n):
|
||||
if is_abundant(i):
|
||||
ret.append(i)
|
||||
return ret
|
||||
|
||||
|
||||
def is_sum_of_two_abundant(n, abundant_numbers):
|
||||
abundant_numbers_set = set(abundant_numbers)
|
||||
for a1 in abundant_numbers:
|
||||
if a1 > n:
|
||||
return False
|
||||
elif (n - a1) in abundant_numbers_set:
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
abundant_numbers = get_abundant_numbers_smaller(30000)
|
||||
cannot_be_written_as_sum_of_abundant = []
|
||||
for i in range(28129):
|
||||
if not is_sum_of_two_abundant(i, abundant_numbers):
|
||||
cannot_be_written_as_sum_of_abundant.append(i)
|
||||
print(sum(cannot_be_written_as_sum_of_abundant))
|
||||
Reference in New Issue
Block a user