-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path006JS-sum-square-difference.js
36 lines (28 loc) · 1.19 KB
/
006JS-sum-square-difference.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// The sum of the squares of the first ten natural numbers is,
// 12 + 22 + ... + 102 = 385
// The square of the sum of the first ten natural numbers is,
// (1 + 2 + ... + 10)2 = 552 = 3025
// Hence the difference between the sum of the squares of the
// first ten natural numbers and the square of the sum is
// 3025 − 385 = 2640.
// Find the difference between the sum of the squares of the
// first one hundred natural numbers and the square of the sum.
//////////////////////////////////////////////////////////////
// Approach:
// The answer is (1 + 2 + ... + n)^2 - (1^2 + 2^2 + ... + n^2)
// the first term is the sum of ints 1-n, squared,
// which is ( n(n+1)/2 )^2.
// the second term is the sum of the squares of ints 1-n,
// which is n(n+1)(2n+1)/6.
// Thus the answer
// = (n(n+1))^2 /2^2 - n(n+1)(2n+1) / 6
// = n^2(n^2 + 2n + 1) / 4 - (n^2 + n)(2n+1) / 6
// = (n^4 + 2n^3 + n^2)/ 4 - (2n^3 + 3n^2 + n) / 6
// = ( 3n^4 + 6n^3 + 3n^2 - (4n^3 + 6n^2 + 2n) ) / 12
// = ( 3n^4 + 2n^3 - 3n^2 - 2n ) / 12
// = (3n^2 + 2n)(n^2 -1) / 12
// = (n-1)(n)(n+1)(3n + 2) /12
function sumSquareDiff(n) {
return (n - 1) * (n) * (n + 1) * (3 * n + 2) / 12;
}
console.log(sumSquareDiff(100));