Example #1
0
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
Example #2
0
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)
Example #3
0
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
Example #4
0
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)
Example #5
0
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)
Example #6
0
def d(n: int):
    return sum(lib.proper_divisors(n))