gpt4 book ai didi

python - 获取所有加起来为一个数字的数字

转载 作者:IT老高 更新时间:2023-10-28 20:47:00 25 4
gpt4 key购买 nike

我试图找到一种方法来显示所有可能的 X 整数集,这些整数加起来等于给定的整数。例如,要获得所有 2 个整数集,我会得到 5:

1, 4
2, 3

或者对于 3 个合为 6 的整数:

1, 1, 4
1, 2, 3
2, 2, 2

我只需要不包括 0 的整数,它只需要在一组中最多处理 15 个,最多 30 个。号码。

我什至不确定这在数学上是否有一个术语。我猜它类似于因式分解?

最佳答案

这是解决此问题的一种方法:

def sum_to_n(n, size, limit=None):
"""Produce all lists of `size` positive integers in decreasing order
that add up to `n`."""
if size == 1:
yield [n]
return
if limit is None:
limit = n
start = (n + size - 1) // size
stop = min(limit, n - size + 1) + 1
for i in range(start, stop):
for tail in sum_to_n(n - i, size - 1, i):
yield [i] + tail

你可以这样使用它。

for partition in sum_to_n(6, 3):
print partition

[2, 2, 2]
[3, 2, 1]
[4, 1, 1]

关于python - 获取所有加起来为一个数字的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2065553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com