在连续整数列表的每个可能子集中乘以整数

时间:2018-08-24 19:55:13

标签: python python-3.x primes

我有以下整数列表:

prime_factors = [2,3,5,7,11,13,17,19,23]

乘以连续整数每个子集的元素的有效方法是什么?

为进一步说明,我需要输出包含以下乘法的结果:2*33*52*3*513*17*197*11*13*17*192*3*5*7*11*13*17*19*23以及连续质数的所有其他可能组合。输出不应包含2*55*7*13等。

1 个答案:

答案 0 :(得分:1)

您可以使用itertools.accumulate进行此操作。

from itertools import accumulate
from operator import mul

def consec_mult(data):
    for i in range(len(data) - 1):
        it = accumulate(data[i:], mul)
        # Skip the single item
        next(it)
        yield from it

# Test

prime_factors = [2, 3, 5, 7, 11]
print(*consec_mult(prime_factors))

输出

6 30 210 2310 15 105 1155 35 385 77

或者,如果您希望结果按数字顺序排序:

print(*sorted(consec_mult(prime_factors)))

输出

6 15 30 35 77 105 210 385 1155 2310