慕虎7371278
这个问题是我在Google搜寻时弹出的第一个链接"python prime factorization"。如@ quangpn88所指出的,该算法对于诸如的完美平方是错误的(!)。n = 4, 9, 16, ...但是,@ quangpn88的修复也不起作用,因为如果最大素数出现3次或3次以上(例如n = 2*2*2 = 8或),它将产生错误的结果n = 2*3*3*3 = 54。我相信Python中正确的蛮力算法是:def largest_prime_factor(n): i = 2 while i * i <= n: if n % i: i += 1 else: n //= i return n不要在性能代码中使用此方法,但是对于数量较大的快速测试也可以:In [1]: %timeit largest_prime_factor(600851475143)1000 loops, best of 3: 388 µs per loop如果寻求完整的素数分解,则为蛮力算法:def prime_factors(n): i = 2 factors = [] while i * i <= n: if n % i: i += 1 else: n //= i factors.append(i) if n > 1: factors.append(n) return factors