2011-05-01 26 views
0

可能重複:
Generate a list of primes in R up to a certain number什麼是在R中指定範圍內找到所有素數的優雅方法?

什麼是優雅的方式找到R中的語言指定範圍內的所有質數?

+3

這個問題和這個不一樣嗎? http://stackoverflow.com/questions/3789968/generate-a-list-of-primes-in-r-up-to-a-certain-number – Chase 2011-05-01 13:21:46

+0

@Chase:兩個區別是它要求一個範圍和它要求「優雅的方式」 – Henry 2011-05-01 21:57:15

回答

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 10000
[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從早先的問題並刪除不需要的較低值。

相關問題