三角数,五角数和六角数分别通过以下公式定义:
三角数 | Tn=n(n+1)/2 | 1, 3, 6, 10, 15, ... | ||
五角数 | Pn=n(3n![]() | 1, 5, 12, 22, 35, ... | ||
六角数 | Hn=n(2n![]() | 1, 6, 15, 28, 45, ... |
可以证实 T285 = P165 = H143 = 40755.
找出这之后的下一个既是五角数又是六角数的三角数。
public class Problem45
{
public static void main(String[] args)
{
long start = System.currentTimeMillis();
System.out.print("answer: ");
howmany();
long end = System.currentTimeMillis();
System.out.print("time: ");
System.out.println(end - start);
}
static void howmany()
{
for (int i = 144; ; i++)
{
long h = i * (2 * i - 1);
double tp = (Math.sqrt(24 * h + 1) + 1) / 6;
if ((int)tp != tp)
{
continue;
}
long tt =(int) Math.sqrt(h * 2);
if (tt * (tt + 1) /2 != h)
{
continue;
}
System.out.println(h);
break;
}
}
}
answer: 1533776805
time: 3