【问题标题】:What is an elegant way to find all prime numbers in a specified range in R? [duplicate]在R中找到指定范围内的所有素数的优雅方法是什么? [复制]
【发布时间】:2011-08-16 10:55:00
【问题描述】:

可能重复:
Generate a list of primes in R up to a certain number

在R语言中查找指定范围内所有素数的优雅方法是什么?

【问题讨论】:

标签: r primes number-theory


【解决方案1】:

这是一个适用于窄范围的单行示例:特别重要的是,范围的底部大于顶部的平方根。大范围也可能存在内存问题。

library(matrixStats)

pRange <- function(a,b) which(!rowCounts(!outer(a:b,2:sqrt(b),FUN="%%")))+a-1

例如

> pRange(1e8, 1e8+1e3)
 [1] 100000007 100000037 100000039 100000049 100000073 100000081 100000123
 [8] 100000127 100000193 100000213 100000217 100000223 100000231 100000237
[15] 100000259 100000267 100000279 100000357 100000379 100000393 100000399
[22] 100000421 100000429 100000463 100000469 100000471 100000493 100000541
[29] 100000543 100000561 100000567 100000577 100000609 100000627 100000643
[36] 100000651 100000661 100000669 100000673 100000687 100000717 100000721
[43] 100000793 100000799 100000801 100000837 100000841 100000853 100000891
[50] 100000921 100000937 100000939 100000963 100000969

在许多情况下,最好使用前面问题中的John's version of a sieve 并删除不需要的较低值可能会更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2019-07-15
    • 2013-09-09
    相关资源
    最近更新 更多