整数分解用连续自然数之和来表达整数
题目
一个整数可以由连续的自然数之和来表示。
给定一个整数,计算该整数有几种连续自然数之和的表达式,
并打印出每一种表达式。
输入
一个目标整数 t
,1 <= t <= 1000
输出
-
该整数的所有表达式和表达式的个数,如果有多种表达式,自然数个数最少的表达式优先输出
-
每个表达式中按自然数递增输出
具体的格式参见样例
在每个测试数据结束时,输出一行
Result:X
其中 X 是最终的表达式个数
示例一
输入
9
输出
9=9
9=4+5
9=2+3+4
Result:3
说明
整数 9 有三种表达方法
示例二
输入
10
输出
10=10
10=1+2+3+4
Result:2
解题思路
求一个正整数 t
的正整数分解,并对所有分解结果按照分解出的数字个数从小到大排序后输出。
核心知识点
求和公式。
Python 代码实现
import math
n = 9
n2 = n * 2
fl = []
for i in range(1, int(math.sqrt(n2) + 1)):
if n2 % i == 0:
i2 = n2 // i
if (i2 - i) % 2 == 0:
continue
sx = (i2 - i + 1) // 2
fl.append([j for j in range(sx, sx + i)])
for i in fl:
print(f"{n}={'+'.join(map(str,i))}")
print(f'Result:{len(fl)}')