该函数可以使用纯数学编写,如下所示:
翻译成Python:
def square_sum_difference(n):
return int((3*n**2 + 2*n) * (1 - n**2) / 12)
该公式是两个其他公式的简化:
def square_sum_difference(n):
return int(n*(n+1)*(2*n+1)/6 - (n*(n+1)/2)**2)
n *(n 1)*(2 * n 1)/ 6是描述的公式here,其返回前n个自然数的平方和.
(n *(n 1)/ 2))** 2使用三角形数公式,它是前n个自然数之和,然后是平方.
这也可以使用内置和函数完成.这里是:
def sum_square_difference(n):
r = range(1, n+1) # first n natural numbers
return sum(i**2 for i in r) - sum(r)**2
范围(1,n 1)产生前n个自然数的迭代器.
>>> list(range(1, 4+1))
[1, 2, 3, 4]
sum(对于i中的i为i **)返回r中数字的平方和,sum(r)** 2返回r中数字之和的平方.