题目
给定一个正整数n,如果能够分解为m(m>1)个连续正整数之和,请输出所有分解中,m最小的分解。
如果给定整数无法分解为连续正整数,则输出字符串"N"。
输入描述
输入数据为一整数,范围为 (1, 2^30],比如23
输出描述
23=11+12
def find_consecutive_integers(n):
# 由于m至少为2,所以从2开始遍历
for m in range(2, n+1):
# 计算a1
a1 = (2*n - m**2 + m) / (2*m)
# 检查a1是否为正整数
if a1.is_integer() and a1 > 0:
# 找到满足条件的最小m
return m, int(a1)
# 如果没有找到满足条件的m,返回None
return None, None
# 输入处理
n = int(input())
# 找到分解
m, a1 = find_consecutive_integers(n)
# 输出结果
if m is not None:
sequence = list(range(a1, a1 + m))
print(f"{n}={'+'.join(map(str, sequence))}")
else:
print("N")