-
primes()– Devuelve una tabla infinita con una única columnaprime(UInt64) que contiene números primos en orden ascendente, a partir de 2. UseLIMIT(y, opcionalmente,OFFSET) para limitar el número de filas. -
primes(N)– Devuelve una tabla con una única columnaprime(UInt64) que contiene los primerosNnúmeros primos, a partir de 2. -
primes(N, M)– Devuelve una tabla con una única columnaprime(UInt64) que contieneMnúmeros primos a partir del primo en la posiciónN(base 0). -
primes(N, M, S)– Devuelve una tabla con una única columnaprime(UInt64) que contieneMnúmeros primos a partir del primo en la posiciónN(base 0), con pasoSsegún el índice de los primos. Los primos devueltos corresponden a los índicesN, N + S, N + 2S, ..., N + (M - 1)S.Sdebe ser>= 1.
system.primes.
Las siguientes consultas son equivalentes:
Ejemplos
p >= 10^15 tal que p módulo 65537 sea 1.
Notas
- Las formas más rápidas son las consultas simples de rango y de filtrado por punto que usan el paso predeterminado (
1), por ejemplo,primes(N)oprimes() LIMIT N. Estas formas usan un generador de números primos optimizado para calcular números primos muy grandes de manera eficiente. - En las fuentes no acotadas (
primes()/system.primes), se pueden aplicar durante la generación filtros simples por valor, comoprime BETWEEN ...,prime IN (...)oprime = ..., para restringir los rangos de valores que se buscan. Por ejemplo, la siguiente consulta se ejecuta casi al instante:
- Esta optimización del rango de valores no se aplica a las funciones de tabla acotadas (
primes(N),primes(offset, count[, paso])) conWHERE, porque esas variantes definen una tabla finita en función del índice de números primos, y el filtro debe evaluarse después de generar esa tabla para preservar la semántica. - Usar un offset distinto de cero y/o un paso mayor que 1 (
primes(offset, count)/primes(offset, count, paso)) puede ser más lento, porque internamente puede ser necesario generar y omitir números primos adicionales. Si no necesita offset ni paso, omítalos.