Miller Rabbin

素数判断和因子分解

这里记录的是素数判断 Miller Rabbin 的快速判定算法,而分解使用的算法是 Pollard Rho 的玄学分解算法,这个算法的理论依据是生日悖论,这里不具体讨论这个数学问题,具体讨论看前面链接就可以了。 以下我们分别简要介绍这两个算法的原理 首先这是Miller Rabbin的维基百科介绍页,由于页面是中文,这里不做重复介绍。 下面简要解释一下Pollard’s Rho算法的原理,这是它的维基百科页面 首先我们来定义这样一个函数 $$f(x)=(x*x+c)%n$$ 其中n是需要被分解的数,c是一个任意小于n的正整数常数。那么我们给一个初始值x1,通过计算 $f(x1)$ 得到x2,然后去求 $|x1-x2|$ 与 n 的最大公约数,只要结果大于1就找到了分解结果。那如果最大公约数仍然是1,那么就通过刚才的x2求出 $x3=f(x2)$ 并计算 $|x1-x3|$ 与 n 的最大公约数。也就是说,我们可以通过这个公式得到一个数列