Red*_*ana 0 python algorithm math
我刚刚解决并找到了项目euler问题45的答案,但是解决方案需要花费20分钟来计算.其他类似的解决方案需要不到一秒的时间来找到解决方案.
我的代码:
import time
def is_triangular(n):
triangle_index = (((8 * n + 1) ** 0.5) + 1) / 2
if triangle_index % 1 == 0:
return True
return False
def is_pentagonal(n):
pentagonal_index = (((24 * n + 1) ** 0.5) + 1) / 6
if pentagonal_index % 1 == 0:
return True
return False
def is_hexagonal(n):
hexagonal_index = (((8 * n + 1) ** 0.5) + 1) / 4
if hexagonal_index % 1 == 0:
return True
return False
number = 40756
while True:
if is_triangular(number) and is_pentagonal(number) and is_hexagonal(number):
print(number)
break
number += 1
Run Code Online (Sandbox Code Playgroud)
而不是通过每个数字,并检查其三角形,五边形和六边形.生成六边形数字,并为每个六边形数字检查其三角形或五边形.
您可以使用六边形数字的公式生成六边形数字,并将n增加1.