项目Euler#6 Java援助

时间:2012-02-24 20:08:15

标签: java

这看起来很简单但是我的代码输出的答案不正确。有人可以暗示我可能在这里失踪的东西,或者我可能在没有给出任何解决方案的情况下犯了错误吗?

问题是找出前100个自然数的平方和与总和的平方之间的差异。

我的代码:

public class Main 
{
    public static void main(String[] args) 
{
        //Sum of Squares = (2n^3 + 3n^2 + n)/6
        //Square of Sums = ((n^2 + n)/2)^2

        double sum_squares = ((2*Math.pow(100,3) + 3*Math.pow(100, 2) + 100)/6);
        double square_sums =  Math.pow(((Math.pow(100, 2) + 100)/2), 2);
        System.out.println((square_sums-sum_squares)+"\n");
    }
}

我的输出是2.516415E7这是不正确的,即使我没有科学记数法输入它。

亲爱的Stack Overflow - 我在这里想念的很简单!

编辑:Peter de Rivaz解决了我的问题。真是个愚蠢的错误!

2 个答案:

答案 0 :(得分:1)

您必须使用完整的整数类型,例如intlongBigIntegerfloat / double会导致舍入错误。此外 - 你非常接近; - )。

答案 1 :(得分:0)

首先想到的是你不应该使用双打,而应该使用整数运算。