小编use*_*495的帖子

python素数分解性能

我是python的新手,我对两个相对简单的代码块的性能感到困惑.第一个函数在给定素数列表的情况下生成数n的素数因子分解.第二个生成n的所有因子的列表.我会prime_factorfactors(对于相同的n)更快,但事实并非如此.我不是在寻找更好的算法,而是我想要理解为什么prime_factor这么慢factors.

def prime_factor(n, primes):
  prime_factors = []
  i = 0
  while n != 1:
      if n % primes[i] == 0:
          factor = primes[i]
          prime_factors.append(factor)
          n = n // factor
      else: i += 1
  return prime_factors

import math
def factors(n):
  if n == 0: return []
  factors = {1, n}
  for i in range(2, math.floor(n ** (1/2)) + 1):
      if n % i == 0:
          factors.add(i)
          factors.add(n // i)
  return list(factors)
Run Code Online (Sandbox Code Playgroud)

使用timeit模块,

{ …

python algorithm performance prime-factoring

13
推荐指数
1
解决办法
790
查看次数

标签 统计

algorithm ×1

performance ×1

prime-factoring ×1

python ×1