-
primes() – Returns an infinite table with a single prime column (UInt64) that contains prime numbers in ascending order, starting from 2. Use LIMIT (and optionally OFFSET) to restrict the number of rows.
-
primes(N) – Returns a table with the single prime column (UInt64) that contains the first N prime numbers, starting from 2.
-
primes(N, M) – Returns a table with the single prime column (UInt64) that contains M prime numbers starting at the N-th prime (0-based).
-
primes(N, M, S) – Returns a table with the single prime column (UInt64) that contains M prime numbers starting from the N-th prime (0-based) with step S by prime index. The returned primes correspond to indices N, N + S, N + 2S, ..., N + (M - 1)S. S must be >= 1.
This is similar to the system.primes system table.
The following queries are equivalent:
The following queries are also equivalent:
Examples
The first 10 primes.
The first prime greater than 1e15.
Solve a modular constraint over primes in a very large range: find the first prime p >= 10^15 such that p modulo 65537 equals 1.
The first 7 Mersenne primes.
Notes
- The fastest forms are the plain range and point-filter queries that use the default step (
1), for example, primes(N) or primes() LIMIT N. These forms use an optimized prime generator to compute very large primes efficiently.
- For unbounded sources (
primes() / system.primes), simple value filters such as prime BETWEEN ..., prime IN (...), or prime = ... can be applied during generation to restrict the searched value ranges. For example, the following query executes almost instantly:
- This value-range optimization does not apply to bounded table functions (
primes(N), primes(offset, count[, step])) with WHERE, because those variants define a finite table by prime index and the filter must be evaluated after generating that table to preserve semantics.
- Using a non-zero offset and/or step greater than 1 (
primes(offset, count) / primes(offset, count, step)) may be slower because additional primes may need to be generated and skipped internally. If you don’t need an offset or step, omit them.
Last modified on July 2, 2026