Вызовы Python: найдите первый номер треугольника, имеющий более n делителей
Задачи 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:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программу на Python, чтобы найти продукт XYZ.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования