我必须将正整数转换为指数形式的素数因子形式。例如:[(2,1),(5,1)]是如上定义的10的正确素因数分解。 我有以下代码来生成因子。现在我应该使它们成为素数并且应该在元组中返回它们的指数。 Pl帮助我。
def primes(n):
divisors = [ d for d in range(2,n//2+1) if n % d == 0]
return divisors
答案 0 :(得分:0)
您可以在时间复杂度上直接遵循以下 O(n ^(1/2))的方法。
# n is the number to be factorized
# this list holds your desired answer
prime_factors = []
# this variable iterates over prime
start = 2
while start*start <= n:
if n % start == 0:
expo = 0
while n % start == 0:
expo = expo + 1
n = n / start
prime_factors.append([start,expo])
if n > 1:
prime_factors.append([n,1])
print prime_factors
这是一种简单的迭代方法。这是运行版本Prime Factorization。单击右上角(fork)以在测试用例上运行 n = 10.也可以在别人身上运行。