我正在处理的问题是:三角形,五边形和六边形数字由以下公式生成:
Triangle Tn=n(n+1)/2
Pentagonal Pn=n(3n−1)/2
Hexagonal Hn=n(2n−1)
可以验证T285 = P165 = H143 = 40755
。
找到下一个三角形和六角形的三角形数字。
我无法找出我的代码无效的原因。它适用于40755
的第一个数字,但在为下一个数字运行时,它只会输出405939771
。根据该网站,这是不正确的。
boolean match = false;
System.out.println("What?");
//Calculations
for (int n = 180; match != true; n++) {
//Pentagonal
long Pn = n * (3 * n - 1) / 2;
// Finding if it has a Hexagonal match
for (int i = 144; i < n; i++) {
long Hn = i * (2 * i - 1);
if (Pn == Hn) {
System.out.println(Hn);
match = true;
break;
}
}
if (match == true)
break;
}
System.out.println("Done!");
我知道可能有更快的方法可以做到这一点,但是现在我感到非常沮丧,因为它不起作用,我找不到原因。