def test_proper_divisors(): proper_divisors_cases = [ (1, [1]), (2, [1]), (3, [1]), (4, [1, 2]), (5, [1]), (6, [1, 2, 3]), (7, [1]), (8, [1, 2, 4]), (9, [1, 3]), (10, [1, 2, 5]), (11, [1]), (12, [1, 2, 3, 4, 6]) ] for inp, output in proper_divisors_cases: assert proper_divisors(inp) == output
def main(): table = {} result = 0 for i in range(1, 10000): divs_sum = sum(proper_divisors(i)) if divs_sum in table and table[divs_sum] == i: print(i, divs_sum) result += divs_sum + i table[i] = divs_sum print(result)
def main(): triangle_number = 0 largest = 0 for i in range(1, int(1e100)): triangle_number += i num_divs = len(proper_divisors(triangle_number)) if num_divs > largest: largest = num_divs print(f'New largest: {triangle_number} -> {largest}') if largest > 500: print(f'Answer: {triangle_number}') break
def main(): total = 100000000 primes_set = set(tqdm(prime_generator(limit=total), total=total)) s = 0 for i in tqdm(primes_set): flag = True for d in proper_divisors(i - 1): if d + (i - 1) // d not in primes_set: flag = False break if flag: s += i - 1 print(s)
def main(): abundant_sums = set() abundant_numbers = [] result = 0 for i in range(1, 28124): divs_sum = sum(proper_divisors(i)) if divs_sum > i: abundant_numbers.append(i) for number in abundant_numbers: if number + i > 28123: break abundant_sums.add(i + number) print(abundant_numbers) print(abundant_sums) for i in range(1, 28124): if i not in abundant_sums: result += i print(result)
def d(n: int): return sum(lib.proper_divisors(n))