繁体   English   中英

在 Python 中采样大于 p 的 n 个随机素数的最快方法?

[英]Fastest way to sample n random primes greater than p in Python?

我想创建一个大于 p ~ 2⁵⁰ 的 n 个素数的日期集。 我希望这些素数不是连续的,但中间有一些空间,所以 iᵗʰ 和 (i+1)ᵗʰ 素数之间的区别不仅仅是几位。

我在循环中使用 Sympy 的randprime(low, hi)

p = [start]
for i in range(n):
    curr = int(randprime(start, 2 * start + 1))
    p.append(curr)
    start = curr

对于n=10,000这会变得非常慢。 有没有更好(更快)的方法来完成我想要的素数采样?

预先计算(或只是下载)一个素数列表,然后在运行时对列表进行采样。

您可以使用此算法生成比 2^50(~10^15)小 30 倍的上限列表: https : //primes.utm.edu/nthprime/algorithm.php

我不知道如何通过合理的硬件设置走得更远。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM