python中指数形式的素因子分解

时间:2015-03-07 06:02:49

标签: python-2.7

我必须将正整数转换为指数形式的素数因子形式。例如:[(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

1 个答案:

答案 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.也可以在别人身上运行。