求n個連續自然數之和為乙個非負整數的陣列

2021-10-21 14:41:25 字數 2262 閱讀 1546

def

find_combinations

(num)

: n =

int(num **

0.5)

# 這裡直接開根號,縮小迴圈範圍

res =

# 前可以轉化成中間項的倍數,所以下面for迴圈求得是中間項的值

for i in

range(2

, n +1)

:if num % i ==0:

mid_01 = i # 中間數

mid_02 =

int(num / i)

# 項數

# 分解出來為mid_01*mid_02的形式,

if mid_02 %2==

1:# mid_02為奇數

first_1 =

(mid_01 - mid_02 //2)

last_1 =

(mid_01 + mid_02 //2)

if first_1 >=0:

'+'.join(

[str

(j)for j in

range

(first_1, last_1 +1)

if j >0]

))else

:# mid_02 為偶數,拆分mid_01 比如:125拆成62+63

if mid_01 %2==

1:t_01 =

int(

(mid_01 -1)

/2) t_02 =

int(

(mid_01 +1)

/2)if t_01 - mid_02 >=0:

lists_01 =

[str

(i)for i in

range

(t_01 - mid_02 +

1, t_01 +1)

if i >0]

lists_02 =

[str

(i)for i in

range

(t_02, t_02 + mid_02)

if i >0]

'+'.join(lists_01 + lists_02)

)# 此處僅僅將上面的mid_01*mid_02 調換成mid_02*mid_01 中間值和項數對調

if mid_01 %2==

1:first_2 =

(mid_02 - mid_01 //2)

last_2 =

(mid_02 + mid_01 //2)

if first_2 >=0:

'+'.join(

[str

(j)for j in

range

(first_2, last_2 +1)

if j >0]

))else

:# mid_02 為偶數,拆分mid_01:125拆成62+63

if mid_02 %2==

1:t_01 =

int(

(mid_02 -1)

/2) t_02 =

int(

(mid_02 +1)

/2)if t_01 - mid_01 >=0:

lists_01 =

[str

(i)for i in

range

(t_01 - mid_01 +

1, t_01 +1)

if i >0]

lists_02 =

[str

(i)for i in

range

(t_02, t_02 + mid_01)

if i >0]

'+'.join(lists_01 + lists_02)

)# 上面要防止第一項等於0

# 奇數特殊解

if num %2==

1:mid =

int(

(num +1)

/2)'+'

.join(

[str

(mid -1)

,str

(mid)])

)str

(num)

)if res:

return res

else

:return

[none

]# test

print

(find_combinations(63)

)

輸入乙個自然數n,求小於等於n的素數之和?

問題描述 輸入乙個自然數n,求小於等於n的素數之和 例如 樣例輸入 2 樣例輸出 2。解題思路 1 什麼是素數 素數 prime number 又稱質數,有無限個。乙個大於1的自然數,除了1和它本身外 因為1既不是素數,也不是合數 不能被其他自然數 質數 整除,換句話說就是該數除了1和它本身以外不再...

歸納策略 求前n個自然數的平方之和

求前n個自然數的平方之和 s 1 2 2 2 3 2 n 2 因為 1 2 2 2 3 2 n2 1 2 3 n 2n 1 3 又由於 1 2 3 n n n 1 2,因此得到 1 2 2 2 3 2 n 2 n n 1 2n 1 6 推導過程 有乙個三角形的數字矩陣 12 2 3 3 3 4 4 ...

1757找i個連續自然數累加為N

找i個連續自然數累加為n time limit 2 seconds memory limit 32768 k total submit 391 accepted 260 description 輸入乙個數字n,找出i個連續自然數累加為n的所有和式 i 1 input 整數n output n i個連...