用于计算平方和与平方和之差的函数

Kum*_*uma 5 python sum

我正在尝试编写一个名为sum_square_differencen 的函数,并返回前n个自然数的平方和与它们的和的平方之间的差值.

我想我知道如何编写一个定义平方和的函数

def sum_of_squares(numbers):
    total = 0
    for num in numbers:
        total += (num ** 2)
    return(total)
Run Code Online (Sandbox Code Playgroud)

我试图实现一个sums函数的平方:

def square_sum(numbers):  
    total = 0
    for each in range: 
        total = total + each
    return total**2
Run Code Online (Sandbox Code Playgroud)

我不知道如何结合功能来区分,我不知道我的功能是否正确.

有什么建议吗?我使用的是Python 3.3

谢谢.

Vol*_*ity 10

该函数可以使用纯数学编写,如下所示:

公式

翻译成Python:

def square_sum_difference(n):
    return int((3*n**2 + 2*n) * (1 - n**2) / 12)
Run Code Online (Sandbox Code Playgroud)

该公式是两个其他公式的简化:

def square_sum_difference(n):
    return int(n*(n+1)*(2*n+1)/6 - (n*(n+1)/2)**2)
Run Code Online (Sandbox Code Playgroud)

n*(n+1)*(2*n+1)/6这里描述的公式,它返回第一个n自然数的平方和.

(n*(n+1)/2))**2使用三角形数公式,它是第一个n自然数的总和,然后是平方.


这也可以通过内置sum功能完成.这里是:

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
Run Code Online (Sandbox Code Playgroud)

所述range(1, n+1)产生的第一个迭代n的自然数.

>>> list(range(1, 4+1))
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

sum(i**2 for i in r)返回r中数字的平方和,并sum(r)**2返回r中数字总和的平方.


mlw*_*lwn 5

#正如beta所说, #(sum(i))^ 2-(sum(i ^ 2))很容易计算:) #A = sum(i)= i *(i + 1)/ 2 #B = sum(i ^ 2)= i *(i + 1)*(2 * i +1)/ 6 #A ^ 2-B = i(i + 1)(3(i ^ 2)-i-2)/ 12 #:) #没有循环...只是一个公式!**