我想创建一个包含 n 个大于 p ~ 2⁵⁰ 的素数的数据集。我希望这些素数不是连续的,但它们之间有一些空间,所以 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
,这会变得非常慢。有没有更好(更快)的方法来完成我想要的主要采样?
最佳答案
预先计算(或仅 download)一次素数列表,然后在运行时对该列表进行采样。
您可以使用以下算法生成上限比 2^50 (~10^15) 小 30 倍的列表:https://primes.utm.edu/nthprime/algorithm.php
我不知道如何通过合理的硬件设置取得进一步的进展。
关于python - 在 Python 中采样大于 p 的 n 个随机素数的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68096528/