高效随机素性测试算法:Miller–Rabin与Solovay–Strassen
在数论和密码学领域,素性测试是一个至关重要的问题。判断一个给定的数是否为素数,对于许多加密算法的安全性和效率起着关键作用。本文将深入探讨两种著名的随机素性测试算法:Miller–Rabin测试和Solovay–Strassen测试,详细介绍它们的原理、实现和性能特点。
1. Fermat测试的局限性
Fermat测试是一种简单的素性测试方法,基于Fermat小定理。然而,它存在严重的局限性,特别是对于Carmichael数。Carmichael数是一类合数,但在Fermat测试中,它们表现得像素数,导致Fermat测试给出错误的结果。具体来说,对于Carmichael数 $n$,$Z_n^*$ 中几乎所有元素都是Fermat骗子,使得Fermat测试的错误概率接近1。
2. Miller–Rabin测试
2.1 算法原理
Miller–Rabin测试是一种改进的随机素性测试算法,通过加强Fermat小定理的条件来提高测试的准确性。该算法的核心思想是寻找所谓的Miller–Rabin见证(MR - witness),如果找到一个MR - witness,则可以确定该数为合数;反之,如果没有找到,则该数很可能是素数。
2.2 相关定义
- MR - witness和MR - liar :对于奇数 $n \geq 3$,定义 $m = (n - 1) / 2^k$,其中 $k = \max{j \in N | 2^j \text{ 整除 } n - 1}$。如果 $a
超级会员免费看
订阅专栏 解锁全文
2800

被折叠的 条评论
为什么被折叠?



