快速素数分解模块
我正在寻找一种实现或清晰的算法,以获取python,伪代码或任何其他易于理解的N的素数分解。有一些要求/事实: N在1到〜20个数字之间 没有预先计算的查找表,虽然可以做备忘录。 无需经过数学证明(例如,如果需要,可以依赖于哥德巴赫猜想) 不必很精确,如果需要,可以是概率/确定性的 我需要一种快速的素数分解算法,不仅针对其本身,而且还需要用于许多其他算法中,例如计算Euler phi(n)。 我尝试了Wikipedia上的其他算法,但是我无法理解它们(ECM),或者无法从该算法创建有效的实现方式(Pollard-Brent)。 我对Pollard-Brent算法真的很感兴趣,因此任何有关它的信息/实现都将非常不错。 谢谢! 编辑 经过一番摸索之后,我创建了一个非常快速的质数/因数分解模块。它结合了优化的试验划分算法,Pollard-Brent算法,米勒-拉宾素数检验和我在互联网上找到的最快的素数筛。gcd是常规的Euclid的GCD实现(二进制Euclid的GCD比常规的慢得多)。 赏金 哦,喜悦,可以获得赏金!但是我怎么能赢呢? 在我的模块中找到优化或错误。 提供替代/更好的算法/实现。 最完整/最有建设性的答案将得到赏金。 最后是模块本身: import random def primesbelow(N): # http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188 #""" Input N>=6, Returns a list of primes, 2 <= p < N """ correction = N % 6 > 1 N = {0:N, 1:N-1, 2:N+4, …