笨鸟

天道酬勤,思者常新;博观约取,厚积薄发;心如止水,气贯长虹;淡泊明志,宁静致远。
posts - 10, comments - 0, trackbacks - 0, articles - 1

    问题描述如下:
        “1到10的平方和为:1^2 + 2^2 + ... + 10^2 = 385,和平方为:(1 + 2 + ... + 10)^2 = 55^2 = 3025,他们之间的差为3025-385=2640,求1到100的和平方与平方和之间的差值?”

    代码实现如下:

    /**
     * 求前n个自然数和平方与平方和之差
     * 
@param n
     * 
@return
     
*/

    
private static int getDifference(int n) {
        
int first = 0;
        
int second = 0;
        
for (int i = 1; i <= n; i++{
            first 
+= i * i;
            second 
+= i;
        }

        
return second * second - first;
    }
    可以得到答案25164150。

    我们还可以使用数学的方法来解此题。
    1^2 + 2^2 + ... + n^2 =n(n+1)(2n+1)/6
    (1+2+3+...+n)^2 =(n(n+1)/2)^2
    相关证明可以去具体的了解,如:
    (n+1)^3 -(n-1)^3 =6n^2+2提示:证明平方和公式,1到n的求和公式就不提示了
    给出代码:

    private static int getDifference1(int n) {
        
return (n*(n+1)/2)*(n*(n+1)/2)-n*(n+1)*(2*n+1)/6;
    }

    到此结束,请不吝赐教。
    @anthor ClumsyBird

-----------------------------
博观约取,厚积薄发


只有注册用户登录后才能发表评论。


网站导航: