在纸上多列几个数字就不难发现,所有奇数都能分解成两个这样的数字x/2,x/2+1;如果能被3整除,就能写成x/3-1,x/3,x/3+1这样的;如果除4余2的数字,能写成x/4-1,x/4,x/4+1,x/4+2;等等。
问题1:代码如下
1: #include
2:
3: using namespace std;
4:
5: int func(int x)
6: {
7: bool noAnswer = true;
8: for (int i = 2; i < x; i++)
9: {
10: if ((i % 2 == 0 && x % i == i / 2) || (i % 2 == 1 && x % i == 0))
11: {
12: int num = x / i - i / 2 + 1;
13: if (num <= 0)
14: {
15: break;
16: }
17: noAnswer = false;
18: cout << x << " = ";
19: int j;
20: for (j = 1; j < i; j++)
21: {
22: cout << x / i - i / 2 + j << " + ";
23: }
24: cout << x / i - i / 2 + j << endl;
25: }
26: }
27: if (noAnswer)
28: {
29: cout << x << " no answer!" << endl;
30: }
31: return 0;
32: }
33:
34: int main()
35: {
36: for (int i = 1; i < 129; i++)
37: {
38: func(i);
39: }
40: system("pause");
41: return 0;
42: }
问题2:
貌似2的多次方都没有答案,证明问题先不看了。
问题3:
对于64位正整数范围,子序列个数为N,有x % N = N / 2的关系,x = 3N/2应该是序列最多的数了。没有严格推导,也先暂时分析到这里。
本文探讨了一种整数分解的方法,通过特定规律将任意整数分解为一系列连续整数之和,并给出了一段C++代码实现。文章还讨论了特定数值下分解序列的数量问题。

1028

被折叠的 条评论
为什么被折叠?



