r - 生成大位数范围内的素数(数字 > 10 位)
问题描述
我正在尝试生成大数范围内的素数(10 位及以上)。但似乎我使用的任何库都需要无限的时间来生成它们。
我在 R 中的代码
library(numbers)
Primes(1000000000,9999999999)
我的 Python 代码
[i for i in primerange(1000000000,9999999999)]
是否有更好的库来快速生成这些数字?
解决方案
@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
推荐阅读
- azure - Azure B2C 注销所有用户
- ruby - 从迭代器调用迭代器,绑定一个参数
- swift - 子类如何覆盖 Swift 中父类的属性?
- c# - C# 捕获基本自定义异常
- postgresql - Docker Postgres - 创建数据库和用户时出错
- html - 在html页面中插入图片
- javascript - axios 可以配置为使用 HTTP/1.1 吗?
- java - 如何配置 Jackson 和 Spring 以根据 URL 路径和嵌套级别以不同方式呈现对象
- scala - Kryo setWarnUnregisteredClasses 为 true,在 spark 配置中不显示任何内容
- spring-boot - 如果我在 spring-boot 中以服务级别提供 @Async 将不起作用