我有以下整数列表:
prime_factors = [2,3,5,7,11,13,17,19,23]
乘以连续整数每个子集的元素的有效方法是什么?
为进一步说明,我需要输出包含以下乘法的结果:2*3
,3*5
,2*3*5
,13*17*19
,7*11*13*17*19
,2*3*5*7*11*13*17*19*23
以及连续质数的所有其他可能组合。输出不应包含2*5
或5*7*13
等。
答案 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