`

将整数分解为连续正整数之和

 
阅读更多

将一个整数 N 分解为连续正整数之和,如 15 可以分解为:

15 = 1 + 2 + 3 + 4 + 5

15 = 4 + 5 + 6

15 = 7 + 8

=============================================

计算从 i 开始连续 k 个数之和:

sum = k * (2 * i + k - 1) / 2;

 

当 sum == N 时,有 k * k + (2 * i - 1) * k - 2 * n = 0 ,

 

变形为 i = ( 2*n / k - k + 1) / 2。

 

在 [2, 2*n / k - k + 1 > 0] 范围枚举 k 即可。

 

#!/usr/bin/python3
def spt(num):
	k = 2
	while 2 * num // k > k - 1:
		if 2 * num % k == 0:			
			tmp = 2 * num // k - k + 1
			if tmp % 2 == 0:
				i = tmp // 2
				print(num, ' = ', ' + '.join(map(str, [x for x in range(i, i + k)])))
		k += 1 # DO NOT forget !!!

 ===================================================

 2*n / k - k + 1 > 0  ===> k * k - k - 2 * N > 0 ===> (1 - sqrt(8 * N + 1)) / 2 < k < (1 + sqrt(8 * N + 1)) / 2

又 k >= 2, 所以 2 <= k < (1 + sqrt(8 * N + 1)) / 2 = 1/2 + sqrt(8 * N + 1) / 2 < sqrt((8 * N + 1) / 4) = sqrt(2 * n + 1/4) < sqrt(2 * N)

即,k 的枚举范围为 [2, sqrt(2 * N))

 

 

 

 

 

分享到:
评论

相关推荐

    连续的正整数之和问题

    连续的正整数之和问题是指将一个正整数分解成连续的正整数之和,例如将3分解成1+2,或者将225分解成12+1325=3+4+5+6+7。这个问题可以使用C语言解决,通过读取输入文件中的数据,然后将其分解成连续的正整数之和,并...

    一个数分成几个连续整数和

    标题中的“一个数分成几个连续整数和”指的是在数学领域中的一种问题类型,它涉及到将一个给定的正整数表示为若干个连续整数的和。这种问题在算法设计、数学竞赛以及数据分析中都有可能出现。连续整数和的问题通常...

    找出一个整数是哪些个连续整数的和

    找出一个整数是哪些个连续整数的和(例如:15=1+2+3+4+5,15=4+5+6,15=7+8)

    整数分解C语言

    例如:1998+1999+2000+2001+2002=10000,是一个累加和等于 N 的连续的自然数段。 输出每个累加和等于 N 的连续的自然数段的第一个数和最后一个数,两数之间用符号~隔开,每段一行,所有行按每行的第一个数从小到大...

    最优分解问题

    最优分解问题是一个经典的数学优化问题,它涉及到如何有效地将一个正整数n分解为若干个互不相同的自然数之和,以使得这些自然数的乘积最大化。这个问题在计算机科学和算法设计中有着广泛的应用,特别是在寻找高效...

    整数划分问题

    例如,将数字15划分成连续正整数之和,有以下几种情况: - 15 - 7 + 8 - 4 + 5 + 6 - 1 + 2 + 3 + 4 + 5 为了找到所有可能的连续整数划分,可以考虑一般形式: - 设 \( n \) 为被划分的正整数,\( x \) 为划分后...

    动态规划 划分最小和

    这个问题是经典的动态规划问题,旨在找到一种方法将一个包含正整数的序列划分为连续的子序列,使得所有子序列和的最大值尽可能小。我们来深入探讨这个问题的解决方案。 首先,我们要理解问题的关键在于找到一个合适...

    连续输入5个100以内的数字,统计和、最小和最大

    3. **数据验证**:利用正则表达式和条件判断语句来检查用户输入是否符合要求(即是否为100以内的正整数)。如果不符合,则输出错误信息并终止程序。 4. **数据处理与更新**:对于合法的输入,我们更新`sum`、`min`...

    整数与多项式1

    整数是数学中的基本概念,包括正整数、零和负整数。它们构成一个有序集合,具有加法、减法、乘法和除法(对于非零整数)等运算。在信息学竞赛中,整数的操作通常是快速和高效计算的关键。例如,整数乘法可以通过将一...

    链表实现合并多项式

    在计算机科学中,数据结构和算法是至关重要的基础,它们为高效的编程提供了理论支持。本话题将探讨如何使用C语言中的链表数据结构来实现两个多项式的合并与打印。链表是一种非连续、非顺序的存储结构,它通过节点间...

    正整数分拆成公差为偶数的等差分拆 (2012年)

    正整数分拆是组合数学中的一个重要概念,它研究将正整数表示为一些正整数之和的方法数。在分拆的研究中,人们常常关注分拆满足某些特定条件的情况,例如仅包含奇数部分的分拆、仅包含偶数部分的分拆、包含不同部分的...

    Primesums-求连续质数和的完全幂

    现在,我们要解决的问题是找到连续质数之和为完全幂的情况。这需要结合前面提到的两个概念。首先,我们需要编写一个程序来生成连续的质数序列,然后计算这些质数的和。一旦得到质数和,我们需要检查这个和是否为某个...

    世界500强面试题.pdf

    1.5.10. 输入一个正数 n,输出所有和为 n 连续正数序列 ................................125 1.6. 面试题集合(五) .......................................................................................126...

    连续时间信号连续时间信号频谱分析及MATLAB实现

    频谱分析是信号处理中的一个重要概念,它涉及到将周期信号分解为一系列正弦或余弦信号和虚指数信号之和的过程。在频谱分析中,一个周期信号可以表示为基频的整数倍谐波的叠加。对于周期信号,其频谱分析通常涉及两个...

    华为上机笔试

    需要考虑如何判断结果的正负,如何表示整数和小数,以及如何处理无效的零。输出结果时,如果结果为正数,则直接输出;若为负数,则输出结果字符串时前面加上负号,并且在处理小数时需要去除无效的零。 ```c void ...

    五年级数学下册三倍数与因数5质因数与分解质因数课件苏教版20200307219

    在数学中,一个数的因数是能够整除这个数的正整数,而质因数是指能整除该数且本身是质数的因数。分解质因数则是将一个合数表示为其质因数的乘积。 在训练题目中,第一部分介绍了两种分解质因数的方法:枝状图分解法...

    求最大公约数的三种算法

    其基本思想是利用以下性质:对于任意两个正整数m和n(m &gt; n),它们的最大公约数等于m除以n的余数和n之间的最大公约数。可以用递归的方式来表达这个算法: ``` gcd(m, n) = gcd(n, m mod n) ``` 一直进行到余数...

    06-14上机真题及答案1

    12年上机题涉及整数分解为连续整数和的问题,可以通过双层循环寻找所有可能的分解组合。对于给定的整数N,通过计算(m+n)(n-m+1)/2来判断是否能表示为连续整数的和,然后输出符合条件的m和n。 这些题目涵盖了基础...

    新北师大版八年级数学下册第四章《因式分解》测试卷.pdf

    条件0)(22222cabcba意味着两边之和等于第三边,这表明a,b,c是等腰三角形的边长,因此答案是A. 等腰三角形。 6. 分解因式技巧:解答题部分如第18题,要求学生对多项式进行因式分解,如1))()(422abbax,2)222224)...

    动态规划实现最佳加法表达式求最小值

    核心思想在于将大问题分解为若干个子问题,通过递归地解决这些子问题,进而求得原问题的解。对于本题,关键步骤如下: 1. **定义状态**:设`f[i][j]`表示在前`i`个字符中插入`j`个加号所能达到的最小值。 2. **初始...

Global site tag (gtag.js) - Google Analytics