連續自然數之和的秘密(1)

《編》書2.21題。

4 + 5 = 9

2 + 3 + 4 = 9

有些數比如 4 和 8 不能分拆寫成連續自然數的和。這裡面有什麼規律呢?如果用程序的思路來寫,顯然可以使用蠻力窮舉可以求解。

這裡面有兩個信息:“連續” 和 “求和”。

我們先看最簡單情況,兩個連續自然數相加。其和必為奇數,故偶數必不可以寫成兩個連續自然數相加。而所有的奇數(2n+1)都可以寫成兩個連續自然數相加,有且只有n, n+1這兩個數才滿足。

我們由此想到,要將一個數寫成m個連續自然數之和,這些數只能聚集在floor(1/m)處,並在該處左右各取數字,來彌補偏差。

連續自然數之和的秘密(1)_第1张图片
符合要求的三個連續自然數必聚於三分處,軟件:Edraw Max 7.9

而一個數 x 最多可以寫成多少個連續自然數之和呢?只能從1開始取。我們有了1+...+m = x這個熟悉的式子。所以知道m最多是floor((sqrt(8x+1)-1)/2)。

而且我們還知道,如果一個數能寫成奇數個(假設為m)連續自然數相加的話,那該數必被m整除,即..., n-2, n-1, n, n+1, n+2, ...之和為 m*n,易知x % m = 0。

那偶數(m>2)的情況呢?

同理,n, n+1, n+2, ... 之和為m*n+ m*(m-1)/2,則x % m = m/2。推導如下:

    x % m

= (m*n + m²/2 - m/2) % m

= (m²/2) % m - (m/2) % m

= (m * (m/2)) % m - (m/2) % m

= m/2 % m

= m/2

至此,我們可以用o(1)的方法驗證一個自然數是否可以寫成任意m個連續自然數的和了。

你可能感兴趣的:(連續自然數之和的秘密(1))