from six.moves import range

sum_sq_diff = lambda n: sum(range(1, n+1))**2 - sum(i**2 for i in range(1, n+1))

sum_sq_diff(10)

sum_sq_diff(100)

"""
Explanation: The sum of the squares of the first ten natural numbers is,
$$1^2 + 2^2 + ... + 10^2 = 385$$
The square of the sum of the first ten natural numbers is,
$$(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.
Version 1
End of explanation
"""


sum_sq_diff = lambda n: n*(3*n+2)*(n-1)*(n+1)/12 

sum_sq_diff(100)

"""
Explanation: <!-- TEASER_END -->

Version 2 - Simple Math
$$\sum_{k=1}^{n} k^2 = \frac{n(n+1)(2n+1)}{6}$$
$$\sum_{k=1}^{n} k = \frac{n(n+1)}{2}$$
$$\left(\sum_{k=1}^{n} k\right)^2 - \sum_{k=1}^{n} k^2 = \left(\frac{n(n+1)}{2}\right)^2 - \frac{n(n+1)(2n+1)}{6} = \frac{n(3n+2)(n-1)(n+1)}{12}$$
End of explanation
"""


