前十個自然數的平方和是:
1^2 + 2^2 + … + 10^2 = 385
前十個自然數的和的平方是:
(1 + 2 + … + 10)^2 = 552 = 3025
所以平方和與和的平方的差是3025 − 385 = 2640.
找出前一百個自然數的平方和與和平方的差。
def
get_square_sub
(x):
""" 遞迴,展開行列式 """
if x < 1:
return
none
get_square_sub(x - 1)
defget_square_sub_str
(x):
""" 遞迴,展開行列式,不計算,儲存每一項的str表示式 """
if x < 1:
return
none
square_of_sum.add(str(x) + ' ** 2')
square_of_sum.add('2 * ' + str(x) + ' * sum(range(1, ' + str(x) + '))')
get_square_sub_str(x - 1)
n = 100
# 直接求解
print(pow(sum(range(1, n+1)), 2) - sum(map(lambda x: pow(x, 2), range(1, n+1))))
# 計算後求解,如(a + b) ** 2 - (a ** 2 + b ** 2) = 2 * a * b
print(2 * sum(map(lambda x: sum(range(1, x)) * x, range(2, n+1))))
# 展開行列式進行求解和平方
square_of_sum =
get_square_sub(n)
sum_of_square = [x ** 2
for x in range(1, n+1)]
print(sum(square_of_sum) - sum(sum_of_square))
# 展開行列式,不計算,用str代替
square_of_sum = set()
get_square_sub_str(n)
sum_of_square = set([str(x) + ' ** 2'
for x in range(1, n+1)])
print(sum(map(eval, square_of_sum - sum_of_square)))
尤拉計畫 14
以下迭代序列定義在整數集合上 n n 2 當n是偶數時 n 3n 1 當n是奇數時 應用以上規則,並且以數字13開始,我們得到以下序列 13 40 20 10 5 16 8 4 2 1 可以看出這個以13開始以1結束的序列包含10個項。雖然還沒有被證明 collatz問題 但是人們認為在這個規則下,...
尤拉計畫 15
從乙個2 2網格的左上角開始,有6條 不允許往回走 通往右下角的路。對於20 20的網格,這樣的路有多少條?def get load num x,y x,y 網格的路數等於 x 1,y x,y 1 if x 0 or y 0 return 1return get xy load x 1,y get ...
尤拉計畫 17
如果用英文寫出數字1到5 one,two,three,four,five,那麼一共需要3 3 5 4 4 19個字母。如果數字1到1000 包含1000 用英文寫出,那麼一共需要多少個字母?注意 空格和連字元不算在內。例如,342 three hundred and forty two 包含23個字...