кодесурса
«Python

Вызовы Python: найдите первый номер треугольника, имеющий более n делителей

script1adsense2code
script1adsense3code

Задачи Python - 1: Упражнение 41 с решением

Напишите программу на Python, чтобы найти первый номер треугольника, имеющий более n (заданных) делителей.

Из Википедии: Треугольное число - это число, которое является суммой всех натуральных чисел до определенного числа. Например, 10 - треугольное число, потому что 1 + 2 + 3 + 4 = 10. Первые 25 треугольных чисел: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325 и 351.
Треугольное число рассчитывается по уравнению: n (n + 1) / 2
Факторы первых пяти треугольных чисел:
1: 1
3: 1, 3
6: 1, 2, 3, 6
10: 1, 2, 5, 10
15: 1, 3, 5, 15
В приведенном выше списке 6 - первый номер треугольника, имеющий более четырех делителей.

Пример решения :

Код Python:

from functools import reduce
def divisors(n):
    expList = []
    ctr = 0
    divisor = 2
    while divisor <= n:
        while n % divisor == 0:
            n = n/divisor
            ctr += 1
        if ctr != 0:
            expList.append(ctr+1)
        divisor += 1
        ctr = 0
    return reduce(lambda n, y: n * y, expList, 1)
def n_divisors(n):
    natural = 1
    triangular_num = 0
    while True:
        triangular_num += natural
        natural += 1
        if divisors(triangular_num) > n:
            break
    return triangular_num
print(n_divisors(5))
print(n_divisors(100))

Пример вывода:

 28
73920

Блок - схема:

«Python

Редактор кода Python:

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программу на Python, чтобы найти продукт XYZ.

Далее: Напишите программу на Python, чтобы найти начальный номер, менее десяти тысяч создаст самую длинную цепочку.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code