> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# primes

> 소수를 포함하는 단일 `prime` 컬럼이 있는 테이블을 반환합니다.

* `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`](/ko/reference/system-tables/primes) 시스템 테이블과 유사합니다.

다음 쿼리는 동일합니다:

```sql theme={null}
SELECT * FROM primes(10);
SELECT * FROM primes(0, 10);
SELECT * FROM primes() LIMIT 10;
SELECT * FROM system.primes LIMIT 10;
SELECT * FROM system.primes WHERE prime IN (2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
```

다음 쿼리도 같은 의미입니다:

```sql theme={null}
SELECT * FROM primes(10, 10);
SELECT * FROM primes() LIMIT 10 OFFSET 10;
SELECT * FROM system.primes LIMIT 10 OFFSET 10;
```

<div id="examples">
  ### 예시
</div>

처음 10개의 소수입니다.

```sql theme={null}
SELECT * FROM primes(10);
```

```response theme={null}
  ┌─prime─┐
  │     2 │
  │     3 │
  │     5 │
  │     7 │
  │    11 │
  │    13 │
  │    17 │
  │    19 │
  │    23 │
  │    29 │
  └───────┘
```

1e15를 초과하는 가장 작은 소수.

```sql theme={null}
SELECT prime FROM primes() WHERE prime > 1e15 LIMIT 1;
```

```response theme={null}
  ┌────────────prime─┐
  │ 1000000000000037 │ -- 1.00 quadrillion
  └──────────────────┘
```

매우 큰 범위에서 소수에 대한 모듈러 제약을 풉니다. `65537`로 나눈 나머지가 `1`인 첫 번째 소수 `p >= 10^15`를 찾으십시오.

```sql theme={null}
SELECT prime
FROM primes()
WHERE prime >= 1e15
  AND prime % 65537 = 1
LIMIT 1;
```

```response theme={null}
 ┌────────────prime─┐
 │ 1000000001218399 │ -- 1.00 quadrillion
 └──────────────────┘
```

처음 7개의 메르센 소수입니다.

```sql theme={null}
SELECT prime
FROM primes()
WHERE bitAnd(prime, prime + 1) = 0
LIMIT 7;
```

```response theme={null}
  ┌──prime─┐
  │      3 │
  │      7 │
  │     31 │
  │    127 │
  │   8191 │
  │ 131071 │
  │ 524287 │
  └────────┘
```

<div id="notes">
  ### 참고 사항
</div>

* 가장 빠른 형식은 기본 간격(`1`)을 사용하는 일반 범위 쿼리와 포인트 필터 쿌리입니다. 예를 들면 `primes(N)` 또는 `primes() LIMIT N`입니다. 이러한 형식은 매우 큰 소수를 효율적으로 계산하기 위해 최적화된 소수 생성기를 사용합니다.
* 경계가 없는 source(`primes()` / `system.primes`)의 경우 `prime BETWEEN ...`, `prime IN (...)`, `prime = ...`와 같은 단순한 값 필터를 생성 중에 적용해 검색할 값 범위를 제한할 수 있습니다. 예를 들어, 다음 쿼리는 거의 즉시 실행됩니다:

```sql theme={null}
SELECT sum(prime)
FROM primes()
WHERE prime BETWEEN 1e6 AND 1e6 + 100
   OR prime BETWEEN 1e12 AND 1e12 + 100
   OR prime BETWEEN 1e15 AND 1e15 + 100
   OR prime IN (9999999967, 9999999971, 9999999973)
   OR prime = 1000000000000037;
```

```response theme={null}
  ┌───────sum(prime)─┐
  │ 2004010006000641 │ -- 2.00 quadrillion
  └──────────────────┘

1 row in set. Elapsed: 0.090 sec. 
```

* 이 값 범위 최적화는 `WHERE`가 있는 범위가 제한된 테이블 함수(`primes(N)`, `primes(offset, count[, 간격])`)에는 적용되지 않습니다. 이러한 변형은 소수 인덱스를 기준으로 유한한 테이블을 정의하므로, 의미를 유지하려면 해당 테이블을 생성한 뒤에 필터를 평가해야 합니다.
* 0이 아닌 offset 및/또는 1보다 큰 간격(`primes(offset, count)` / `primes(offset, count, step)`)을 사용하면 내부적으로 추가 소수를 생성한 후 건너뛰어야 할 수 있으므로 더 느릴 수 있습니다. offset이나 간격이 필요 없다면 생략하십시오.
