Java中的Euler 45项目

时间:2017-02-28 19:20:29

标签: java project

我正在处理的问题是:三角形,五边形和六边形数字由以下公式生成:

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!");

我知道可能有更快的方法可以做到这一点,但是现在我感到非常沮丧,因为它不起作用,我找不到原因。

0 个答案:

没有答案