来自欧拉计划,问题45:
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle T_(n)=n(n+1)/2 1, 3, 6, 10, 15, ...
Pentagonal P_(n)=n(3n−1)/2 1, 5, 12, 22, 35, ...
Hexagonal H_(n)=n(2n−1) 1, 6, 15, 28, 45, ...
It can be verified that T_(285) = P_(165) = H_(143) = 40755.
Find the next triangle number that is also pentagonal and hexagonal.
[ http://projecteuler.net/problem=45 ]
现在为了解决它们,我取了三个变量并将方程式等于A。
n(n + 1)/2 = a(3a - 1)/2 = b(2b - 1) = A
A = 三个函数在n、a、b值相同时的数字
结果我们得到了关于n和A的3个方程式。用二次公式求解,我们得到3个方程式。
(-1 + sqrt(1 + 8*A ) )/2
( 1 + sqrt(1 + 24*A) )/6
( 1 + sqrt(1 + 8*A ) )/4
我的逻辑是测试A的值,使得三个方程式给出自然数+正值。到目前为止,它对小于40755的数字运行正确,但在接下来的1000万中未能找到下一个。
(编辑): 这是我的Python代码
from math import *
i=10000000
while(1):
i = i + 1
if(((-1+sqrt(1+8*i))/2).is_integer()):
if(((1+sqrt(1+24*i))/6).is_integer()):
if(((1+sqrt(1+8*i))/4).is_integer()):
print i
break
我的逻辑哪里有问题?(很抱歉涉及到一些数学。 :) )