Поскольку вы просматриваете каждое натуральное число после 40755. Ограничьте регистр подмножеством действительных чисел: если вы уже знаете, что число не является шестигранным, вы можете, например, его отбросить.
Так какшестиугольники находятся в менее плотном подмножестве, начните с просмотра чисел в этом наборе.Затем проверьте, являются ли они пятиугольниками, и, в конце концов, проверьте, являются ли они и треугольными.
пример основной функции:
hex = 144
while True:
number = hex*(2*hex-1)
if is_hexagonal(number):
if is_pentagonal(number):
if is_triangular(number):
print("Found: {}".format(number))
break
hex += 1
Существуют другие модификации, которые можно сделать в коде Python,но я сосредоточился только на алгоритме.