-
primes()– Retorna uma tabela infinita com uma única colunaprime(UInt64) que contém números primos em ordem crescente, a partir de 2. UseLIMIT(e, opcionalmente,OFFSET) para limitar o número de linhas. -
primes(N)– Retorna uma tabela com uma única colunaprime(UInt64) que contém os primeirosNnúmeros primos, a partir de 2. -
primes(N, M)– Retorna uma tabela com uma única colunaprime(UInt64) que contémMnúmeros primos a partir doN-ésimo número primo (indexação baseada em 0). -
primes(N, M, S)– Retorna uma tabela com uma única colunaprime(UInt64) que contémMnúmeros primos a partir doN-ésimo número primo (indexação baseada em 0), com passoSno índice dos primos. Os primos retornados correspondem aos índicesN, N + S, N + 2S, ..., N + (M - 1)S.Sdeve ser>= 1.
system.primes.
As consultas a seguir são equivalentes:
Exemplos
p >= 10^15 tal que p módulo 65537 seja 1.
Observações
- As formas mais rápidas são as consultas simples de intervalo e as consultas com filtro por ponto que usam o passo padrão (
1), por exemplo,primes(N)ouprimes() LIMIT N. Essas formas usam um gerador de primos otimizado para calcular números primos muito grandes com eficiência. - Para fontes não limitadas (
primes()/system.primes), filtros de valor simples, comoprime BETWEEN ...,prime IN (...)ouprime = ..., podem ser aplicados durante a geração para restringir os intervalos de valores pesquisados. Por exemplo, a consulta a seguir é executada quase instantaneamente:
- Esta otimização de intervalo de valores não se aplica a funções de tabela limitadas (
primes(N),primes(offset, count[, step])) comWHERE, porque essas variantes definem uma tabela finita pelo índice do número primo, e o filtro precisa ser avaliado após a geração dessa tabela para preservar a semântica. - Usar um offset diferente de zero e/ou um passo maior que 1 (
primes(offset, count)/primes(offset, count, step)) pode ser mais lento, porque talvez seja necessário gerar e ignorar internamente números primos adicionais. Se você não precisar de offset nem de passo, omita-os.