首页 > 其他分享 >寻找因子和素性检验

寻找因子和素性检验

时间:2022-11-28 22:12:31浏览次数:33  
标签:算法 素性 bmod 素数 检验 因子 neq equiv

《初等数论及其运用》6.1 章节

Wilson 定理

对于 \(p\),

\[ (p - 1)! \equiv \left\{ \begin{array}{ll} -1 & p 是素数 \\ 2 & p = 4\\ 0 & p \neq 4 且是合数\\ \end{array} \right. \]

证明:
对于素数,利用缩系的性质证明。
对于合数,考虑分解 \(p=ab\),然后考虑 \((p-1)!\) 里面是否包含 \(a,b\) 即可。很容易证明。

Fermat 小定理

对于 \((a,p) = 1\),有 \(a^{p-1} \equiv 1(\bmod p)\)。

判断素数

miller-rabin 算法

寻找因子

pollard p-1 算法

当 \(n\) 存在素数 \(p\),并且能整除 \(p - 1\) 的 \(k!\) 中的 \(k\) 不太大时,可以求出一个非平凡因子。时间复杂度是 \(O(k \log n \log k)\)。

考虑一个整数 \(b \neq p\),那么由费马小定理 \(b^{p - 1} \equiv 1(\bmod p)\)。有\(p-1 | k!\) 有 \(b^{k!} = (b^{p-1})^q \equiv 1^q = 1(\bmod p)\)。

那么对于 \(b^{k!} \equiv m(\bmod n)\),有 \(m = b^{k!} - nt\),从而 \(p | m\),因此 \((m, n)\) 是一个因子。

当 \(m \neq 0\) 时为非平凡因子。

那么我们令 \(k = 1,2,...,n\),每次计算 \(b^{k!}\) 时逐级计算,然后判断 \((m,n)\) 是否为非 \(1\) 和 \(n\) 的数即可。

总结:没用。慢的很还有局限性。随机大法好。

pollard rho 算法

标签:算法,素性,bmod,素数,检验,因子,neq,equiv
From: https://www.cnblogs.com/Zeardoe/p/16933788.html

相关文章