编程之美 2.21
我们知道:1+2=3;
4+5=9;
2+3+4=9;
[question]
等式左边都是两个以上连续的自然数相加,那么是不是所有的整数都可以写成这种形式呢?
写一个程序,对于一个32位正整数,输出它所有的连续自然数之和的算式。
1.思路:
两数之和 K+K+1=2K+1
三数之和 K+K+1+K+2 = 3K+1+2
四数之和 4K+1+2+3
N数之和 N*K+1+2+3+...+(N-1)
输入的为input = N*K + 1+(N-1)*N/2
K为整数,K>=1 && k<=N的平方根
解答1:
2. 不是所有的数都能被这么表示的
2的N次幂就不能够被这么表示,为什么?证明,不会.....(数学学得有点失败)
连续自然数之和(从m到n)可以表示为(m+n)*(n-m+1)/2。
如果m+n为偶数,则n-m+1为奇数,反之亦然。即(m+n)和(n-m+1),必有一个是奇数。
2的N次幂的值不可能有奇数因子,所以...
3. 见other的blog,未懂
http://hi.baidu.com/shiqicai/blog/item/abaa0916b566f756f2de3231.html
http://hi.baidu.com/yjsagacity/blog/item/85b9428b506efb1bc9fc7a4b.html
《编程之美》的官方blog
http://www.cnblogs.com/bvbook/archive/2008/11/18/1335742.html