首页 > 解决方案 > 生成大位数范围内的素数(数字 > 10 位)

问题描述

我正在尝试生成大数范围内的素数(10 位及以上)。但似乎我使用的任何库都需要无限的时间来生成它们。

我在 R 中的代码

library(numbers)
Primes(1000000000,9999999999)

我的 Python 代码

[i for i in primerange(1000000000,9999999999)]

是否有更好的库来快速生成这些数字?

标签: rpython-3.xmathsympyprimes

解决方案


@JohanC 进行了很好的观察。你真的需要一次所有的素数吗?在这个范围内生成“下一个”素数很快。如果您一次可以使用 1 个或几个,则可以

>>> p = nextprime(1000000000)
>>> while 1:
...     print(p)  # or do what you need to do
...     p = nextprime(p)

由此可见

1000000007
1000000009
1000000021
...

如果您不希望它们连续(但不介意重复值的可能性很小),您可以使用

while 1:
    p = nextprime(randint(1000000000,9999999999))
    # do something

推荐阅读