分解连续自然数的和_将整数分解为连续自然数之和
将一个正整数,拆分成连续的自然数之和,输出所有可能的情况
例如: 3 = 1+2
10 = 1+2+3+4
18 = 5+6+7
偶然见到这个问题,这里写下自己的解法。
分析:
对给定整数x以及一组满足要求的数字序列:a1a2……an,有
x=a1+a2+……an
数字的序列可以看做是一个公差为1的等差数列,数列的和根据数列的性质,可以得出满足要求的序列的一些性质。
数列的和即x可以数列的一项或两项来表示:
n为偶数时,x=(ai+aj)*n/2;i+j=n+1 (1)
n为奇数时,x=n*ak;k=n/2+1 (2)
1.从中可知,若n为奇数,则x一定可以被n整除,而这n个数字中间的一个就是x/n,并且可以据此得出这个数左右各(n-1)/2个数字。
若n为偶数,则(1)中的i和j可以取特定的两个值n/2、n/+1;ai和aj是相邻的两个数字,则有ai+aj是奇数,x/n=(ai+aj)/2,则有x不能被n整除,而2x可以被n整除。对于任一对i+j=n+1都有ai+aj,取i=1,j=n,可以解出a1,再依次加一得到序列的其他数字。
2.对于长度一定为n的连续自然数串,和最小的序列应该是1,2……n,和为n(n+1)/2,如果x
即应该满足:n(n+1)/2<=x →n^2<2x
由以上内容可以写出伪代码如下:
decompose(x):
n=1
while(n*n<2x)
do
if(n%2==1&&x%n==0) 有该长度数字序列
if(n%2==0&&2x%n==0&&x%n!=0) 有该长度数字序列
n++
done
c代码:
void decompose(int num)
{
//序列的长度
int i=1;
int k=0;
//序列第一个数字
int aFirst;
printf(“%d:\n”,num);
while(i*i<2*num)
{
if(i%2==1)
{
if(num%i==0)
{
aFirst=num/i-i/2;
for(k=0;k
printf(“%d “,(k+aFirst));
}
printf(“\n”);
}
}
else
{
if((2*num)%i==0&&num%i!=0)
{
aFirst=num/i-(i/2)+1;
for(k = 0;k
{
printf(“%d “,k+aFirst);
}
printf(“\n”);
}
}
i++;
}
}
分解连续自然数的和_将整数分解为连续自然数之和相关推荐
- 分解连续自然数的和_[算法]正整数分解为几个连续自然数之和
题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 ...
- java 任意多个整数相加_一个整数分为若干个连续整数之和(使用java实现)
题目描述: 要求写出所有连续的正整数序列,使其之和等于90,小明灵光一闪,立马写上了29,30,31, 他看到解释说明台式告知答案不止一种,过了好一会,他总算算出了所有的5种答案 给你一个正整数Num ...
- php分解质因数,用PHP如何实现将一个整数分解为质因数的积?
先对数字进行因式分解算法 再过滤结果集中,不符合的结果集. class Helper { public function chechPrime($num) { for ($i = floor(sqrt ...
- 整数拆分为连续自然数之和
闲得蛋疼: 连续自然数之和可以利用等差数列求和公式求得: , N=n*a+n*(n-1)/2: 其中N为需要拆分的整数,n为拆分后连续自然数个数,a为连续自然数中第一位数,比如: 36=11+12+1 ...
- 华为OD机试题:整数表达为连续自然数之和
题目描述: 一个整数可以由连续的自然数之和来表示,给定一个整数,计算该整数有几种连续自然数之和的表达式,并打印出每一种表达式. 输入描述: 一个目标整数t 1<= t <=1000 输出描 ...
- HUAWEI 机试题:整数表达为连续自然数之和(Python解法)
题目描述: 一个整数可以由连续的自然数之和来表示,给定一个整数,计算该整数有几种连续自然数之和的表达式,并打印出每一种表达式. 输入描述: 一个目标整数t 1<= t <=1000 输出描 ...
- VJ 1033 整数分解(版本2)
描述 整数分解(版本2) 一个正整数可以分解成若干个自然数之和.请你编一个程序,对于给出的一个正整数n(1<=n<=1500),求出满足要求的分解方案,并使这些自然数的乘积m达到最大. 例 ...
- 编程将一个整数分解成一个质因数的连乘积,并打印在屏幕上
//编程将一个整数分解成一个质因数的连乘积,并打印在屏幕上 //***本题的难点是既要找出质因数,又要保证其连乘为该数 //***需要两个循环,外循环与内循环 /*每个合数 都可以写成几个 质数 相乘 ...
- 51nod 13831048 整数分解为2的幂 [递推]【数学】
题目连接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1048 ---------------------------- ...
最新文章
- 【剑指offer-Java版】39二叉树的深度
- Android媒体播放框架MediaSessionCompat介绍实践
- 什么是Scala的收益?
- mac 思科 链路聚合_交换技术链路聚合配置
- android两张图片切换,android recyclerview 切换列表视图
- 图像色调,饱和度,对比度等相关定义
- 41、OrthoMCL和mcl软件进行基因家族分析
- Android 捕获异常,上报异常日志,捕获奔溃日志,bugly使用实例
- 深度学习--Keras总结
- PHP生成静态网页的方法
- 【转】Mac系统中安装homebrew(类似redhat|Centos中的yum;类似Ubuntu中的apt-get)
- 计算机考试桌贴,考试考场桌贴打印
- live555学习之基本类介绍及计划任务深度探讨
- ubuntu 11.10 下network proxy 的设置问题
- java中cookie怎么用_java 中session和cookie的使用
- linux可执行文件bad interpreter解决方法
- slickedit 运行java_SlickEdit 一些使用技巧(转载)--一个人的博客
- 银盛支付银账通进件接口php demo 签名 上传图片 进件 获取token 超简洁sdk
- 浏览器控制台Network面板简述
- 【安卓开机启动】安卓JVM加载so库流程
热门文章
- python之cv2动态绘制图形
- oracle临时表与外部表,临时表,外部表 - wzl_up的个人空间 - OSCHINA - 中文开源技术交流社区...
- FPGA数字信号处理(六)直接型IIR滤波器Verilog设计
- 围观一个无限循环的奇葩代码,把电脑弄死机了
- ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队
- java sinh_java.lang.StrictMath.sinh()方法实例
- ABP+AdminLTE+Bootstrap Table权限管理系统一期
- 机器学习模型的生命周期
- ST17H66低功耗蓝牙SOC开发(8)—— proprietary_rf工程讲解
- Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载