C语言求连续自然数
更高类别:【C语言】【C语言索引】(https://jb243.github.io/pages/802)
a. GitHub
问. 通过将至少两个连续的自然数相加,找出得出给定数字的方法数。例如,
15 = 7 + 8 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5
共有四种方法。
引理。
设N为给定数,N=a×b,a=2k形式,2不能整除b。那么,问题中所要求的路数就等于b的约数数。
证明。
考虑将 n 与 k 个自然数相加。
在这种情况下,可以看出k是2N的约数。
对于 2N 的任意约数 k,定义 n,并且以下条件是必要且充分的。
由于 2n + k - 1 和 k 具有不同的奇偶性,如果一侧是 2N 的奇数约数,则另一侧是偶数约数。 (第二个条件)
首先,我们忽略条件 2n + k - 1 > k 来思考一下。
2n + k - 1 可以是偶数,k 可以是奇数,或者 2n + k - 1 可以是奇数,k 可以是偶数。
(注意 2N 是偶数。)
在每种情况下,都可以轻松确认路数等于 b 的约数数。
但是,由于 2n + k - 1 和 k 具有不同的奇偶性,因此它们不能相等。
另外,由于2n+k-1和k是对称的,因此2n+k-1>k和k>2n+k-1的情况的数量是相同的。
因此,考虑 2n + k - 1 > k,我们有以下结果:
受保护_0
输入:2016.02.17 23:50