尤拉計畫 6

2021-07-25 12:02:10 字數 1287 閱讀 6484

前十個自然數的平方和是:

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個字...