Какой элегантный способ найти все простые числа в указанном диапазоне в R?

Возможный дубликат:
Создать список простых чисел в R до определенного числа

Каковы элегантные способы найти все простые числа в указанном диапазоне на языке R?


person Leonid    schedule 01.05.2011    source источник
comment
Этот вопрос чем-то отличается от этого? stackoverflow.com/questions/3789968/   -  person Chase    schedule 01.05.2011
comment
@Chase: два отличия заключаются в том, что он запрашивает диапазон и запрашивает элегантные способы   -  person Henry    schedule 02.05.2011


Ответы (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

Во многих случаях, вероятно, было бы быстрее использовать версия сита Джона из предыдущего вопроса и отбросить нежелательные более низкие значения.

person Henry    schedule 01.05.2011