Problem 6
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.
Solution
(1 + 2 + … + 10)^2 = 55^2 = 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.
–>
<head>
<title>Project Euler 006</title>
</head>
<body >
<script type="text/javascript">
n = 100;
answer=.25*Math.pow(n,4)+1/6*Math.pow(n,3)-.25*Math.pow(n,2)-1/6*n;
document.write("<b>" + answer + "</b>");
</script>
</body>
</html>
Discussion
You’ll notice that this is fast, but different from the IronRuby solution given a couple of days ago. if you know that this is a 4th order polynomial then you can solve for the coefficients using simple linear algebra techniques. That is, assume the solution is in the form of
ax4 + bx3 + cx2 + dx + e
Then you just need to solve for a, b, c, d, and e. This is a pretty trivial tasks if you have the right tools at your disposal. Since there are 5 unknowns here we need 5 equations. Let’s plug 0 in first.
a*0 + b*0 + c * 0 + d * 0 + e = 0
This means that e = 0 so now we actually only have 4 unknowns a, b, c, and d. If you repeat this process by replacing x with your number (1,2,3,4) and setting the right side of the equation to the square(sums) – sum(squares) then you will get this matrix:
n4 | n3 | n2 | n | s |
1 | 1 | 1 | 1 | 0 |
16 | 8 | 4 | 2 | 4 |
81 | 27 | 9 | 3 | 22 |
256 | 64 | 16 | 4 | 70 |
Where s is the solution to sum(n)2 – sum(n2). If you plug this into a solver you will get:
(1/4, 1/6, –1/4, –1/6)
The only real trick is determining that a 4th order polynomial will be adequate to solve the problem. If you are really curious how to do that, leave a comment or please find me on Twitter (@azzlsoft) or email (rich@azzlsoft.com).