primes Table Function
-
primes()– 2부터 시작하여 오름차순의 소수를 포함하는 단일prime컬럼(UInt64)을 가진 무한 테이블을 반환합니다.LIMIT(및 필요하다면OFFSET)을 사용하여 행 수를 제한합니다. -
primes(N)– 2부터 시작하여 처음N개의 소수를 포함하는 단일prime컬럼(UInt64)을 가진 테이블을 반환합니다. -
primes(N, M)–N번째 소수(0부터 시작하는 인덱스)부터 시작하여M개의 소수를 포함하는 단일prime컬럼(UInt64)을 가진 테이블을 반환합니다. -
primes(N, M, S)–N번째 소수(0부터 시작하는 인덱스)부터 시작하여 소수 인덱스를S간격으로 증가시키면서M개의 소수를 포함하는 단일prime컬럼(UInt64)을 가진 테이블을 반환합니다. 반환되는 소수는 인덱스N, N + S, N + 2S, ..., N + (M - 1)S에 해당합니다.S는 반드시>= 1이어야 합니다.
이는 system.primes 시스템 테이블과 유사합니다.
다음 쿼리는 서로 동일합니다:
다음 쿼리들도 서로 동일한 결과를 반환합니다:
예시
처음 10개의 소수:
1e15보다 큰 첫 번째 소수.
아주 큰 범위의 소수에 대해 모듈러 CONSTRAINT를 만족하는 값을 구합니다. p >= 10^15를 만족하는 소수 p 중 p를 65537로 나눈 나머지가 1이 되는 첫 번째 값을 찾습니다.
처음 7개의 메르센 소수.
참고 사항
- 가장 빠른 형태는 기본 step(
1)을 사용하는 단순 범위 쿼리와 포인트 필터 쿼리입니다. 예를 들어primes(N)또는primes() LIMIT N과 같습니다. 이러한 형태는 최적화된 소수 생성기를 사용하여 매우 큰 소수를 효율적으로 계산합니다. - 비한정 소스(
primes()/system.primes)의 경우,prime BETWEEN ...,prime IN (...),prime = ...와 같은 단순 값 필터를 생성 과정에 적용하여 검색할 값의 범위를 제한할 수 있습니다. 예를 들어, 다음 쿼리는 거의 즉시 실행됩니다.
- 이 값 범위 최적화는
WHERE가 있는 범위가 제한된 테이블 함수(primes(N),primes(offset, count[, step]))에는 적용되지 않습니다. 이러한 변형은 소수 인덱스로 유한한 테이블을 정의하므로, 의미를 보존하기 위해 해당 테이블을 생성한 이후에 필터를 평가해야 합니다. - 0이 아닌 offset 및/또는 1보다 큰 step (
primes(offset, count)/primes(offset, count, step))을 사용하면 내부적으로 추가 소수를 더 생성한 뒤 건너뛰어야 할 수 있어 더 느려질 수 있습니다. offset이나 step이 필요하지 않다면 생략하십시오.