連續整數和問題

2021-09-06 12:35:23 字數 741 閱讀 3579

問題描述:

大部分正整數可以表示2個以上連續整數之和。如:6=1+2+3,9=5+4=2+3+4;

實驗任務:

連續整數和問題要求計算給定的正整數可以表示為多少個2以上連續整數之和。

解題過程:

乙個數m若可以寫成以a開頭的連續n個自然數之和,則m=a+(a+1)+(a+2)+…+(a+n-1)=n*a+n*(n-1)/2,要求a>=1,否則就是以a+1開頭的連續n-1個整數了,也就是要求(m-(n*(n-1)/2))除於n大於等於1,(m-(n*(n+1)/2))%n==0,這樣就很容易判斷乙個數可不可以寫成連續n個自然數的形式了,遍歷n=2…sqrt(2*m+0.25)-0.5,還可以輸出所有解。

1 #include2 #include3

4int ans=0;5

void find(intx)6

22}23}

24}25int

main()

2634

return0;

35 }

view code

通過程式設計實驗發現,除了2^n以外,其餘所有數都可以寫成該形式。下面說明為什麼。

若數m符合條件,則有m=a+(a+1)+(a+2)+…+(a+n-1)=(2*a+n-1)*n/2,而2*a+n-1與n肯定乙個為奇數乙個為偶數,即m一定要有乙個奇數因子,而所有2^n都沒有奇數因子,因此肯定不符合條件。

可以證明,只要m有乙個奇數因子,就一定可以寫成連續n個自然數之和。

連續整數和問題

問題描述 大部分的正整數可以表示為2個以上連續整數之和。如6 1 2 3,9 4 5 2 3 4.你的任務是求出給定正整數可以表示為多少個2個以上連續整數之和。思路 令輸入的數為n,i 1,j i i,sum i,j m n 2 1 在3個之中迴圈。直到不滿足條件為止。條件 i j j 1.若sum...

連續正整數問題

題目描述 乙個正整數有可能可以被表示為 n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提供給程式。輸出資料 在標準輸出上列印出符合題目描述...

遞迴 求連續整數和

題目 輸入乙個正數n,輸出所有和為n連續正數序列。例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以輸出3個連續序列1 5 4 6和7 8。解題思路 首先,要找的肯定是小於等於n 2 1的數。那麼我們就可以從n 2 1開始向下每個數遞迴尋找,如果找到合適的情況,那麼久輸出即可。遞迴...