Регулярное выражение отрицательное предвидение

@Matt: журнал (журнал (10000)) ~2

От статьи Википедии (который Вы процитировали) Решето Atkin:

Это решето вычисляет начала до N использование O(N/log log N) операции с только N 1/2+o (1) глоток> биты памяти. Это немного лучше, чем решето Эратосфена, которое использует O(N) операции, и O (N 1/2 глоток> (журнал регистрируются, N) / регистрируют N) биты памяти (A.O.L. Atkin, D.J. Bernstein, 2004) . Эти асимптотические вычислительные сложности включают простую оптимизацию, такую как факторизация колеса и разделение вычисления к меньшим блокам.

Данный асимптотические вычислительные сложности вперед O(N) (для Eratosthenes) и O(N/log(log(N))) (для Atkin) мы не можем сказать (для маленького N=10_000), какой алгоритм, если реализовано будет быстрее.

Ахим Flammenkamp записал в Решето Эратосфена :

процитированный:

@num1

Для интервалов, больше о 10^9, конечно, для тех> 10^10, Решето Эратосфена, превзойден по характеристикам Решетом Atkins и Bernstein, который использует неприводимые бинарные квадратичные формы. Посмотрите их статью для получения информации о фоне, а также абзац 5 W. Кандидатская диссертация Голуэя.

Поэтому для 10_000 Решето Эратосфена может быть быстрее тогда Решето Atkin.

Для ответа на OP код prime_sieve.c (процитирован num1)

57
задан themesandmodules 27 November 2009 в 15:10
поделиться

2 ответа

Отрицательный просмотр вперед говорит, что в этой позиции следующее регулярное выражение не может соответствовать.

Давайте рассмотрим упрощенный пример:

a(?!b(?!c))

a      Match: (?!b) succeeds
ac     Match: (?!b) succeeds
ab     No match: (?!b(?!c)) fails
abe    No match: (?!b(?!c)) fails
abc    Match: (?!b(?!c)) succeeds

Последний пример - это двойное отрицание : оно допускает b , за которым следует c . Вложенный отрицательный просмотр вперед становится положительным: должен присутствовать c .

В каждом примере сопоставляется только a . Предварительный просмотр является лишь условием и не добавляет к совпадающему тексту.

105
ответ дан 24 November 2019 в 19:30
поделиться

Поисковые запросы могут быть вложенными.

Таким образом, это регулярное выражение соответствует «drupal-6.14 /», то есть , а не , за которым следует «сайты», то есть не ] с последующим «/ all» или «/default".

Используя другие слова, мы можем сказать, что он соответствует "drupal-6.14 /", то есть не , за которым следует "sites" , если только не сопровождается "/ all" или "/ default"

12
ответ дан 24 November 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: