Перейти к основному содержанию
  • primes() – Возвращает бесконечную таблицу с единственным столбцом prime (UInt64), содержащим простые числа в порядке возрастания, начиная с 2. Используйте LIMIT (и при необходимости OFFSET), чтобы ограничить число строк.
  • primes(N) – Возвращает таблицу с единственным столбцом prime (UInt64), содержащим первые N простых чисел, начиная с 2.
  • primes(N, M) – Возвращает таблицу с единственным столбцом prime (UInt64), содержащим M простых чисел, начиная с N-го простого числа (индексация с 0).
  • primes(N, M, S) – Возвращает таблицу с единственным столбцом prime (UInt64), содержащим M простых чисел, начиная с N-го простого числа (индексация с 0), с шагом S по индексу простого числа. Возвращаемые простые числа соответствуют индексам N, N + S, N + 2S, ..., N + (M - 1)S. S должно быть >= 1.
Это аналогично системной таблице system.primes. Следующие запросы эквивалентны:
Следующие запросы также эквивалентны:

Примеры

Первые 10 простых чисел.
Первое простое число больше 1e15.
Решите ограничение по модулю для простых чисел в очень большом диапазоне: найдите первое простое число p >= 10^15, для которого p по модулю 65537 равно 1.
Первые 7 чисел Мерсенна, являющихся простыми.

Примечания

  • Самые быстрые варианты — обычные запросы по диапазону и запросы с точечным фильтром, использующие шаг по умолчанию (1), например primes(N) или primes() LIMIT N. В них используется оптимизированный генератор простых чисел, который позволяет эффективно вычислять очень большие простые числа.
  • Для неограниченных источников (primes() / system.primes) простые фильтры по значению, такие как prime BETWEEN ..., prime IN (...) или prime = ..., можно применять прямо в процессе генерации, чтобы сузить диапазоны поиска. Например, следующий запрос выполняется почти мгновенно:
  • Эта оптимизация диапазона значений не применяется к ограниченным табличным функциям (primes(N), primes(offset, count[, step])) с WHERE, поскольку эти варианты задают конечную таблицу по индексу простых чисел, и для сохранения семантики фильтр должен вычисляться после генерации этой таблицы.
  • Использование ненулевого смещения и/или шага больше 1 (primes(offset, count) / primes(offset, count, step)) может работать медленнее, поскольку внутри может потребоваться сгенерировать и пропустить дополнительные простые числа. Если смещение или шаг вам не нужны, опустите их.
Последнее изменение 2 июля 2026 г.