欧拉计划 #6 Python

Project Euler #6 Python

我要解决的问题在这里:https://projecteuler.net/problem=6

我试过了,但打印出来的都是两个零:

sumsquare = 0
ssum = 0
def sumsquaredif(n):
    for i in range(1, n+1):
        num = i ** 2
        num += sumsquare
        i += ssum
    squaresum = ssum**2
    print (squaresum)
    print (sumsquare)
    return
sumsquaredif(10)

然后我当然必须添加代码以从 squaresum 中减去 sumsquare 并打印它。但是这个初步代码不起作用。如果有人能提供帮助,我将不胜感激。我还是个初学者。谢谢!

您的 += 分配方式错误! num += sumsquare 是将总和加到当前数字上,而不是相反,与 ssum 类似。另外,求和变量应该在函数内部声明。

def sumsquaredif(n):
    sumsquare = 0  # inside function
    ssum = 0       # inside function
    for i in range(1, n+1):
        num = i ** 2
        sumsquare += num  # inversed
        ssum += i         # inversed
    squaresum = ssum**2

此外,您可以通过使用列表理解使代码更短:

sumsquare = sum(n for n in range(1, n+1))**2
squaresum = sum(n**2 for n in range(1, n+1))