差值平方和匹配_问题6-求1到100的和平方与平方和的差值

问题描述如下:

“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的求和公式就不提示了

给出代码:

/**

* 1^2+2^2+3^2+...+n^2 = n(n+1)(2n+1)/6

* (1+2+3+...+n)^2=(n(n+1)/2)^2

* @param n

* @return

*/

private static int getDifference1(int n) {

return (n*(n+1)/2)*(n*(n+1)/2)-n*(n+1)*(2*n+1)/6;

}

到此结束,请不吝赐教。

@anthor ClumsyBirdZ

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-11-23 13:37

浏览 1672

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值