数论与密码学中的素数生成及素性测试
1. 随机素数生成
生成随机 $n$ 位素数的自然方法是反复选择随机的 $n$ 位整数,直到找到一个素数为止,最多尝试 $t$ 次。下面是该过程的高级描述算法:
ALGORITHM 9.31
Generating a random prime – high-level outline
Input: Length n; parameter t
Output: A uniform n-bit prime
for i = 1 to t:
p′ ←{0, 1}n−1
p := 1∥p′
if p is prime return p
return fail
此算法通过将 $p$ 的最高位固定为 “1”,确保输出的是长度恰好为 $n$ 的整数。若能确定给定整数 $p$ 是否为素数,该算法在不输出 “fail” 的条件下,会输出一个均匀分布的 $n$ 位素数。算法输出 “fail” 的概率取决于 $t$,为使失败概率在 $n$ 上可忽略不计,我们需要更好地理解两个问题:
- 均匀 $n$ 位整数是素数的概率。
- 如何高效地测试给定整数 $p$ 是否为素数。
素数的分布
素数定理给出了给定长度整数中素数比例的精确界限。有如下推论:对于任意 $n > 1$,$n$ 位整数中素数的比例至少为 $\frac{1}{3n}$。这意味着若设 $t = 3n^2$,则在算法的所有 $t$ 次迭代中都未选到素数的概率至多为 $(1 - \frac{1}{3n})^t = (1 - \frac{1
超级会员免费看
订阅专栏 解锁全文
30

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



