Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中实现2d数组/里程表?_Python_Python 3.x_Prime Factoring - Fatal编程技术网

如何在python中实现2d数组/里程表?

如何在python中实现2d数组/里程表?,python,python-3.x,prime-factoring,Python,Python 3.x,Prime Factoring,我正在研究一种算法,它能从一个数的素数因子中找出它的所有因子。这是我到目前为止的代码 def is_prime(x): return all(x % i for i in range(2, x)) def next_prime(x): return min([a for a in range(x+1, 2*x) if is_prime(a)]) def numFactors(n): factors = {1, n} primeFactors = dict()

我正在研究一种算法,它能从一个数的素数因子中找出它的所有因子。这是我到目前为止的代码

def is_prime(x):
    return all(x % i for i in range(2, x))

def next_prime(x):
    return min([a for a in range(x+1, 2*x) if is_prime(a)])

def numFactors(n):

    factors = {1, n}
    primeFactors = dict()

    s = n
    while s != 1:
        # print(s)
        pr = 2
        while s % pr != 0:
            pr = next_prime(pr)
        if pr in primeFactors.keys():
            primeFactors[pr] += 1
        else:
            primeFactors[pr] = 1
        factors.add(pr)
        factors.add(int(s/pr))
        s = int(s/pr)

这段代码为我提供了一个包含所有素因子及其指数的字典。例如,120给出了
{2:3,3:1,5:1}
我要做的是让每一个因素都像这样:
(2^1*3^0*5^0),(2^2*3^0*5^0).
这多少是一个类似这样的里程表

(0 0 0)
(1 0 0)
(2 0 0)
(3 0 0)
(0 1 0)
(1 1 0)
(2 1 0)
...

如何从primeFactors值实现这一点?我似乎无法组合正确的循环组合,尤其是因为每列都有不同的最大整数。

您可以尝试
itertools.product

来自itertools导入产品的

d={2:3,3:1,5:1}
keys=d.keys()
可能性=['*'.产品中i的联接([f'{j[0]}^{j[1]}用于zip中的j(键,i)])([d中的v的范围(v+1)。值()])]
打印(可能)

非常感谢。重新设计了这个解决方案,它满足了我的需要。
['2^0*3^0*5^0',
 '2^0*3^0*5^1',
 '2^0*3^1*5^0', 
'2^0*3^1*5^1', 
'2^1*3^0*5^0', 
'2^1*3^0*5^1', 
'2^1*3^1*5^0', 
'2^1*3^1*5^1', 
'2^2*3^0*5^0', 
'2^2*3^0*5^1', 
'2^2*3^1*5^0', 
'2^2*3^1*5^1', 
'2^3*3^0*5^0', 
'2^3*3^0*5^1', 
'2^3*3^1*5^0', 
'2^3*3^1*5^1']