我們知道:1+2=3;4+5=9;2+3+4=9;
等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?
\(num=i + i+1 + i+2 + ....+ i+k-1\) 一共有k個數。
因為\(num=(2*i+k-1)*k/2\)
接下來分析\((2*i + k-1)*k*(1/2)\)的特徵。
\(2*i\)為偶數。若k為奇數,k-1為偶數。則\((2*i + k-1)*(1/2)\) 是乙個整數。設為x。則\(num=k * x =奇數 * x .\)
\(2*i\)為偶數。若k為偶數,k-1為奇數。則\((2*i + k-1)\)為奇數。則 k*(1/2) 是乙個整數。設為x。則\(num=(2*i + k-1) * x =奇數 * x .\)
由此可見,num的因式分解中必須含有乙個奇數才可以表達成連續自然數相加的形式。
由此推理得:這些數都是2的n次方。只要是2的n次方就不能轉化成各個自然數連續相加的情形。
(只要是2的n次方就不能轉化成各個自然數連續相加的情形。 )
子串行從1開始向後加可以形成最長的序列。設這個序列的和為x,則在64位正整數範圍內,\(x<2^-1\)
\[x=1+2+3+...+k = k*(k+1)/2
解出\(k<=6074000999\) 則 \(num= 18446744070963499500\)
2 21 只考加法的面試題
question 我們知道 1 2 3 4 5 9 2 3 4 9 等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?寫乙個程式,對於乙個32位正整數,輸出它所有的連續自然數之和的算式。analysis 可以發現任意自然數序列其實是公差為1的等差數列,那麼數列前n項和公...
程式設計之美2 21 只考加法的面試題
問題1 寫乙個程式,對於乙個數,輸出他所有可能的連續自然數之和的算式。解 num a a 1 a 2 a 3 a k 2 a k 1 k a a k 1 2 ka k k 1 2 k是整數,a是整數,所以k k 1 2也是整數。include using namespace std void que...
程式設計之美2 21 只考加法的面試題
題目 我們知道 1 2 3 4 5 9 2 3 4 9 等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?問題1.寫乙個程式,對於乙個64位正整數,輸出它所有可能的連續自然數 兩個以上 之和的算式 問題2.有的數例如32就找不到這樣的表達,這樣的數字有什麼規律?問題3....