早教吧作业答案频道 -->其他-->
如何用C实现一个将整数分解成连续自然数的函数
题目详情
如何用C实现一个将整数分解成连续自然数的函数
▼优质解答
答案和解析
解题过程和证明如下:
问题:已知sum等于从k开始连续n个正整数之和,求k。
连续n个正整数之和显然是等差数列的问题,我们有公式:
S={a_1}n+\frac{n(n-1)d}{2},对于我们的问题,有d=1。
所以对于从k开始的n个正整数,他们的和为:
S={a_1}n+\frac{n(n-1)}{2}=\frac{1}{2}n^2+\frac{2k-1}{2}n
\Rightarrow \frac{1}{2}n^2+\frac{2k-1}{2}n-S=0 (式1)
再来考虑n的范围,显然当从1开始加的时候,n应当最大;而n的最小情况则是当S为奇数时,S=\frac{S-1}{2}+\frac{S+1}{2}这种情形。
所以我们计算最大的可能的最大值n_max(程序中的max_n),令a1=1,公差d=1带入公式,
S=n_{max}+\frac{n_{max}(n_{max}-1)}{2}=\frac{1}{2}n_{max}^2+\frac{1}{2}n_{max}
\Rightarrow \frac{1}{2}n_{max}^2+\frac{1}{2}n_{max}-S=0
用二次方程的求根公式,我们可以得到nf_{max}=-\frac{1}{2}+\sqrt{\frac{1}{4}+2S}。
得到的这个nf不一定是一个整数,我们向下取整就得到n_{max} = floor(nf_{max})。
然后对于范围n\in [2, n_{max}]内的所有正整数n,我们带入式1验证
\Rightarrow \frac{2k-1}{2}n=S-\frac{1}{2}n^2
\Rightarrow k=\frac{S}{n}-\frac{n-1}{2}
如果k是整数,那么k就是我们要求的一个解。
问题:已知sum等于从k开始连续n个正整数之和,求k。
连续n个正整数之和显然是等差数列的问题,我们有公式:
S={a_1}n+\frac{n(n-1)d}{2},对于我们的问题,有d=1。
所以对于从k开始的n个正整数,他们的和为:
S={a_1}n+\frac{n(n-1)}{2}=\frac{1}{2}n^2+\frac{2k-1}{2}n
\Rightarrow \frac{1}{2}n^2+\frac{2k-1}{2}n-S=0 (式1)
再来考虑n的范围,显然当从1开始加的时候,n应当最大;而n的最小情况则是当S为奇数时,S=\frac{S-1}{2}+\frac{S+1}{2}这种情形。
所以我们计算最大的可能的最大值n_max(程序中的max_n),令a1=1,公差d=1带入公式,
S=n_{max}+\frac{n_{max}(n_{max}-1)}{2}=\frac{1}{2}n_{max}^2+\frac{1}{2}n_{max}
\Rightarrow \frac{1}{2}n_{max}^2+\frac{1}{2}n_{max}-S=0
用二次方程的求根公式,我们可以得到nf_{max}=-\frac{1}{2}+\sqrt{\frac{1}{4}+2S}。
得到的这个nf不一定是一个整数,我们向下取整就得到n_{max} = floor(nf_{max})。
然后对于范围n\in [2, n_{max}]内的所有正整数n,我们带入式1验证
\Rightarrow \frac{2k-1}{2}n=S-\frac{1}{2}n^2
\Rightarrow k=\frac{S}{n}-\frac{n-1}{2}
如果k是整数,那么k就是我们要求的一个解。
看了 如何用C实现一个将整数分解成...的网友还看了以下:
-2是()A.负有理数B.正有理数C.自然数D.无理数 2020-05-13 …
修改病句.原文:在各门功课中,语文是我最敢兴趣的.其他学科如数学,自然,历史我就学得差劲了.老师对 2020-05-17 …
用修改符号修改下面的一段话在个门攻课中,语文是我最敢兴趣的.其他学科,如数学,自然,历史我就学的差 2020-06-24 …
下列说法正确的是()A.一个数不是正数就是负数B.圆周率是有限小数C.自然数除0外都是正数D.所有 2020-06-27 …
3和13是39的()A因数B质数C倍数下面说法中正确的是()A35÷0.7=50,35是0.7和5 2020-07-17 …
一个正方形的边长是以哥质数,这个正方形的周长一定是()A、合数B、奇数C、质数.相邻两个自然数的积 2020-07-26 …
修改病句再多门攻课中,语文对我最感兴趣,其他攻课如数学,自然,科技等,就差劲了.老师和我们进行个别谈 2020-11-05 …
改病句4、在多门功课中,语文对我最感兴趣,其它攻课如数学,自然,科技等,就差劲了.老师和我们进行个别 2020-11-08 …
用C++写怎么弄?如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数.例如5和6是一位自 2020-11-28 …
1.下列说法正确的是().A.一个数不是正数就是负数.B.分数包括正分数、零、负分数.C.自然数一定 2020-12-07 …