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

标签 python primes sampling

我想创建一个包含 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/

相关文章:

Python: reshape 具有多个索引的数据框

python - 将一个 NumPy 数组除以另一个 NumPy 数组

java - java的素数程序

python - 为什么这在 Python 中不可能?

python - Pandas:沿运行时定义的每行列映射函数(使用 *args)

python - 双重跳出嵌套循环

c - 针对内存优化的初筛

filtering - 低通滤波器和采样频率

image-processing - 对图像进行分层采样

audio - 在音频文件中获取与特定时间相对应的样本帧偏移