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